如何进行日志挖掘?

2 投票
2 回答
1334 浏览
提问于 2025-04-16 13:28

为了从我们用wxPython开发的一个专有桌面工具中找出一些信息,我在几个重要的类方法上加了一个记录日志的装饰器。每条日志记录看起来像下面这样:

应用程序在phpmyadmin中的日志记录

现在,数据库里有超过300万条日志记录,我开始思考“我能从这些东西中得到什么?”我可以得到一些信息,比如:

  • 在一段时间内(比如一周)某个类和方法的访问频率。
  • 通过记录数量来识别活跃用户。
  • 通过比较丢失的关闭日志打开日志,大致估算崩溃率。

我猜相关的技术可能是日志挖掘。有没有人知道我还可以从这些非常简单的日志中获取哪些进一步的信息?我真的很想从中得到更多。

2 个回答

1

模式!

失败之前的模式。假设记录了一次失败,现在可以考虑以下问题:

  • 在这次失败之前,发生了哪些类和方法的组合?
  • 还有其他组合吗?
  • 每次相同的失败之前,都是同样的组合吗?
  • 小的失败会在大的失败之前出现吗?
  • 等等

比较这些模式的一种方法可以这样进行:

  1. 对每条信息进行分类
  2. 用一个独特的ID来表示每种类别,这样你就得到了一个ID的序列
  3. 把这个序列分成不同的时间段来进行比较
  4. 用差异算法比较这些时间段(ID数组)
  5. 保留一些时间段的样本,以找出常见的模式,然后用相同时间段的新样本来判断是否有异常
1

SpliFF说得对,你需要先决定哪些问题对你来说重要,然后再看看你收集的数据是否能帮助你回答这些问题。理解这些操作数据是非常有价值的。

你可以先尝试回答一些基本问题,等你建立了日志收集和分析的流程后,再去解决更复杂的问题。你可以考虑一些长期的问题:

  • 用户在使用过程中遇到的最常见和最严重的错误,按出现频率和影响程度排序。数据: 如果可能的话,记录堆栈跟踪、调用点和方法参数。
  • 能否简化用户常用的某些操作?如果X是最常用的,是否可以减少步骤数量,或者简化某些步骤?数据: 记录会话和常见工作流程的点击流。按使用频率、步骤数量和复杂性对功能进行排序。
  • 某些功能可能会让人困惑,选项之间存在冲突,导致用户出错。用户多次后退重复某个步骤,或者从头开始的会话可能会很有启发。

你也可以通知用户正在收集数据以提高质量,甚至可以在应用界面中征求一些反馈。

撰写回答