代码之家  ›  专栏  ›  技术社区  ›  Mithaldu

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

  •  1
  • Mithaldu  · 技术社区  · 16 年前

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

    编辑:

    3 回复  |  直到 8 年前
        1
  •  2
  •   kbenson    16 年前

    我认为在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中。

        2
  •  1
  •   brian d foy    16 年前

    loganalysis

    也, log_analysis 可能值得一看在Perl中实现的。

        3
  •  1
  •   brian d foy    16 年前

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

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

    Log4perl . 您不仅可以指定任何您喜欢的格式,而且可以将输出发送到任何您喜欢的地方。您甚至可以将输出发送到完全规范化的数据库,这样您的摘要生成器实际上就是一些SQL。