什么CPAN模块可以汇总Perl错误日志?

什么CPAN模块可以汇总Perl错误日志?,perl,logging,module,cpan,Perl,Logging,Module,Cpan,我正在维护一些网站代码,这些代码很快就会将所有错误和警告转储到日志文件中。为了使这一点更加积极主动,我计划每天解析此日志文件,总结警告和错误(即,通过警告/错误计算每个特定的警告和错误组的发生次数),然后将其通过电子邮件发送给项目的开发人员 不可否认,对于散列和进一步的修改,这可能是相当琐碎的,我想知道CPAN上是否有合适的模块可以用来完成这项任务 它可以是专门总结Perl错误/警告日志的日志,也可以是总结任意文本文件的日志。有什么建议吗 编辑: 我维护的站点是在每天生成50MB警告的状态下继承

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

不可否认,对于散列和进一步的修改,这可能是相当琐碎的,我想知道CPAN上是否有合适的模块可以用来完成这项任务

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

编辑:


我维护的站点是在每天生成50MB警告的状态下继承的。我只是想找一种绷带,我可以用它指出最多产的绷带。Log4Perl可以在我没有关键的东西要修复时出现,但是现在它不是一个选项。

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


另外,可能值得一看Perl中实现的组件。

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


此外,在Perl中实现的日志格式可能值得一看。

没有一个神奇的模块可以处理任何日志格式,包括人们在本地使用的虚构的日志格式,您可以使用它。你的日志格式有什么问题吗?你有printf风格的描述吗?它看起来像是其他东西广泛使用的格式吗

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

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

更新


您可以在注释中澄清(尽管您没有编辑问题来澄清),这是针对perl发出的警告和错误。在这种情况下,开发人员似乎需要一个合适的测试套件来捕获所有这些内容。如果你在生产中使用捕捉警告的计划,那么你就有一个失败的过程。

没有一个神奇的模块可以处理任何日志格式,包括人们在本地使用的虚构格式,你可以使用它。你的日志格式有什么问题吗?你有printf风格的描述吗?它看起来像是其他东西广泛使用的格式吗

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

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

更新


您可以在注释中澄清(尽管您没有编辑问题来澄清),这是针对perl发出的警告和错误。在这种情况下,开发人员似乎需要一个合适的测试套件来捕获所有这些内容。如果你在生产中使用捕捉警告的计划,那么你就有了一个失败的过程。

我认为在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上查找像这样具体和简单的内容可能有些过分。假设日志文件采用默认的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。

可能的重复我认为这个问题是关于读取日志,而不是创建日志。所以它不是重复的。可能的重复我认为这个问题是ab读取日志,而不是创建日志。因此它不是重复的。您误解了一点。日志不会是任意的。它只包含基本的Perl错误和警告消息;每行一条。考虑一下,虽然Log4Perl可能真的是最佳的,尽管它意味着将整个事情推迟到以后,当我有时间设置时我真的只是想找一些小东西,我现在可以顺便去看看,然后用它运行。我没有误解:你没有指定什么是“错误和警告”are.Log4perl也不需要那么长的时间来设置。Log4perl的+1。我在生产环境中使用它,从一开始就将各种警告和错误分离到单独的文件中(按错误类型、源系统组件等分开),其中常规电子邮件报告只需逐字发送这些文件。在源端分离内容要容易得多,这样下游消费者就不必再次解析它,并试图找出每一行有多重要。你确实误解了。不要试图用自己的方式来解决这一问题。我提到了CPAN和Perl,这就创造了一个语境,在这个语境中,“错误和警告”这两个组合词具有独特而具体的含义,没有必要加以澄清。