【问题标题】:Dynamically Identifying frequency of errors in logs动态识别日志中的错误频率
【发布时间】:2020-12-08 04:43:54
【问题描述】:

我将从留下来开始,我不是开发人员。我的编码技能是初级的,所以如果这个问题已经在其他地方得到回答而我错过了,我深表歉意。

我们的软件直接在客户机器上运行,生成并上传“错误”日志。目前,这些日志只是上传到我们服务器上的一个文件夹,每 30 分钟左右一次,服务会读取它们以获取客户 ID,并将它们移动到客户的帐户中。他们坐在那里,直到有人手动查看他们并决定他们是否意味着什么以及要做什么,如果有的话。

这对于追溯查看客户是否与其他客户有相同的问题非常有效。

我想做的是让读取客户 ID 日志的服务也使用某种模式分析来识别每个独特的错误,然后随着时间的推移记录频率。如1天、3天、5天、1周、2周等。

部分问题在于客户机器上动态生成的错误日志。一些错误是我们在代码中预先编写的,但我们得到的许多错误来自第三方来源和集成。我们得到的许多错误并不是我们提前发现的。

一个很好的例子,戴尔改变了他们的一个系统工具,开始删除我们的几个文件;它产生了一个特定的错误。不是我们写的,但仍然足够具体,一旦我们确定它,我们就可以追踪它。

所以,在冗长的解释之后。有没有做这种分析的好方法?我们通常更喜欢尽可能多地使用 .net 框架。我看到的大部分结果都取决于寻找现有模式,而这并不是我想要的。

【问题讨论】:

    标签: .net design-patterns


    【解决方案1】:

    有很多方法可以考虑偏离幸福道路的方式,但一种观点是区分:

    • 可预测的问题;我们称这些失败。
    • 不可预测的问题;让我们称这些例外。

    应在代码中处理可预测的故障。这是可能的,正是因为它们是可预测的。由于代码可以处理这些故障,因此没有理由记录它们。

    真正特殊的问题是您无法预测的问题。你登录的那些。但是,由于您无法预测它们,因此我看不出在没有人工解释的情况下如何有效地分析它们。

    如果第三方系统容易引起问题,请设置Contract Tests 并进行监控。

    【讨论】:

    • 谢谢。我会调查的。
    【解决方案2】:

    我也是这个编码方面的新手。我刚刚遇到了一个处理文本中单词频率的代码。我不确定这是否是问题所在,但这仍然是一个想法,对吗? :)

    def count_errors(logs):
        result = {}
        for errors in logs:
            if errors not in result:
                result[errors] = 0
            result[errors] += 1
        return result
    

    它给出了一个错误字典作为键和它们的出现次数作为值。

    不过我也很好奇解决方案 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      相关资源
      最近更新 更多