当前位置:  开发笔记 > 编程语言 > 正文

如何让log4perl输出更容易阅读?

如何解决《如何让log4perl输出更容易阅读?》经验,为你挑选了2个好方法。

使用log4perl时,我使用的调试日志布局是:

log4perl.appender.D10.layout=PatternLayout
log4perl.appender.D10.layout.ConversionPattern=%d [pid=%P] %p %F{1} (%L) %M %m%n
log4perl.appender.D10.Filter = DebugAndUp

这会生成非常详细的调试日志,例如:

2008/11/26 11:57:28 [pid=25485] DEBUG SomeModule.pm (331) functions::SomeModule::Test Test XXX was successfull
2008/11/26 11:57:29 [pid=25485] ERROR SomeOtherUnrelatedModule.pm (99999) functions::SomeModule::AnotherTest AnotherTest YYY has faled

这很好用,并提供出色的调试数据.

但是,调试日志的每一行都包含不同的函数名称,pid长度等.这使得每个行的布局都不同,并且使得读取调试日志比需要的更加困难.

是否有一种方法在log4perl中格式化行,以便调试元数据(直到实际日志消息的所有内容)在末尾用空格/制表符填充,并使实际消息从同一列文本开始?



1> innaM..:

您可以填充构成条目的单个字段.例如,[pid =%5P]将始终为PID提供至少5个字符.

Log :: Log4perl :: Layout文档中的"Quantify Placeholders"部分提供了更多详细信息.



2> brian d foy..:

有几种方法可以解决这个问题,尽管你必须找出哪种方法可以更好地适应你的情况:

    如果您正在工作,请使用不同的appender.让appender使用只显示所需信息的模式.例如,如果您在单个进程中工作,则备用appender可能会忽略PID和时间戳.您可能只需要文件名和行号.

    使用%n把换行符在正确的地方.这使得它的多行输出稍后难以解析,但您可以为输入记录分隔符选择另一个序列(例如,文字"[EOL]"),以便于逐个条目地读取.

    记录到数据库而不是文件.对于报告,只需选择要检查的列.

    记录所有内容,但编写过滤器以通过日志文件ad-hoc显示您想要查看的部分,例如仅显示调试消息,特定时间之间的条目,仅涉及文件的条目等等.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有