【问题标题】:What CPAN module can summarize Perl error logs?什么 CPAN 模块可以汇总 Perl 错误日志?
【发布时间】:2010-04-25 06:36:10
【问题描述】:

我正在维护一些网站代码,这些代码很快会将其所有错误和警告转储到日志文件中。为了让这更主动一点,我计划每天解析这个日志文件,总结警告和错误(即计算每个特定的发生次数并按警告/错误分组),然后通过电子邮件将其发送给开发人员项目。

诚然,这对于散列和一些进一步的摆弄来说可能是相当微不足道的,我想知道 CPAN 上是否有合适的模块可以用来完成这项任务。

它要么是专门总结 Perl 错误/警告日志的,要么是总结任意文本文件的。有什么建议吗?

编辑:

我维护的网站是在每天生成 50MB 警告的状态下继承的。我只是在寻找一个我可以申请指出最多产的创可贴。一旦我用完了要修复的关键内容,Log4Perl 就可以进来,但是现在它不是一个选项。

【问题讨论】:

标签: perl logging module cpan


【解决方案1】:

我认为在 CPAN 上寻找如此具体和简单的东西可能有点矫枉过正。假设日志文件采用默认的 apache 错误格式:

[Mon Apr 26 15:39:34 2010] [error] [client 69.12.220.202] syntax error at /var/www/cgi-bin/errortest.cgi line 8, near "{}"

这里有一个快速的线路,用于将按最高发生率排序的错误邮寄到一个地址。轻松更改为邮寄多个地址(或创建一个别名发送到多个地址并发送到该地址。

cat LOGFILE |
perl -ple 's/\[\w+\s\w+\s\d+\s\S+\s\d+\]\s\[[^\]]+\]\s\[[^\]]+\]\s//;' |
sort |     # Sort errors after
uniq -c |  # Uniqify with count
sort -rn | # Sort line counts
mail -s "Error list" EMAIL@ADDRESS

您可以通过在您认为最合适的任何位置输入 grep -v 来轻松排除行。把它扔进 cron 做每日报告,或者把它放到一个脚本中并添加到 logrotate 中。

【讨论】:

  • 它不是一个 CPAN 模块,但它的技术含量很低,可以作为一个合适的插入式创可贴,非常感谢。 :)
【解决方案2】:

不是 CPAN 模块,但loganalysis 站点有一些非常有用的工具和日志解析和分析信息。

另外,log_analysis 可能值得一看,因为它在 Perl 中实现。

【讨论】:

    【解决方案3】:

    不会有一个神奇的模块可以处理任何日志格式,包括人们在本地使用的那些,你可以扔给它。你的日志格式有什么问题吗?你有它的 printf 风格的描述吗?它看起来像是一种广泛使用的格式吗?

    如果您可以选择错误消息的格式,请使其看起来像您喜欢的工具可以理解的内容。

    您也可以考虑使用Log4perl 之类的东西。您不仅可以指定您喜欢的任何格式,还可以将输出发送到您喜欢的任何地方。您甚至可以将输出发送到完全规范化的数据库,这样您的摘要器实际上只是一些 SQL。

    更新

    您在评论中澄清(尽管您没有编辑您的问题来澄清)这是针对 perl 发出的警告和错误。在这种情况下,听起来开发人员需要一个适当的测试套件来捕获所有这些东西。如果您将一些东西投入生产并计划捕获警告,那么您的流程就会中断。

    【讨论】:

    • 你误会了一点。日志不会是任意的。它只包含基本的 Perl 错误和警告消息;每行一个。考虑一下,尽管 Log4Perl 可能确实是最佳选择,尽管这意味着将整个事情推迟到以后我可以找到时间进行设置时。我真的只是在寻找一些我现在可以放入并随身携带的小东西。
    • 我没有误解:您没有指定“错误和警告”是什么。 Log4perl 也不需要那么长时间来设置。
    • +1 用于 Log4perl。我在生产环境中使用它从一开始就将各种警告和错误分离到单独的文件中(按错误类型、系统组件来源等分隔),其中常规电子邮件报告只是逐字发送这些文件。在源端分离内容要容易得多,这样下游消费者就不必再次将其解析回去并试图弄清楚每一行的重要性。
    • 你误会了。不要试图谈论你的出路。我提到了 CPAN 和 Perl,它们创建了一个上下文,其中“错误和警告”的组合词具有独特而具体的含义。没有必要澄清。此外:您显然从未继承过一个从一开始就被破坏的网站,并且每天会生成 50 MB 日志的警告。我只是在寻找一个快速的创可贴,它可以帮助我找出哪些是最多产的。一旦我完成了那种东西,我就可以考虑放入像 Log4Perl 这样的整体。
    • 我给你一个非常模糊的问题陈述的通用解决方案,我的答案仍然成立。我知道你很沮丧,因为你正在与这场大火搏斗,但不要把它转移给试图帮助你的人。 50MB 并没有那么大,而且我抢救了很多很多网站,我敢打赌,快速修复只在少数几个地方。小心你对你不认识的人的假设,但在你自己的问题中责备他们时要更加小心。
    猜你喜欢
    • 2018-02-01
    • 2023-03-06
    • 1970-01-01
    • 2020-02-12
    • 2018-03-15
    • 1970-01-01
    • 2016-07-11
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多