问题标签 [log4perl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 如何使 log4perl 输出更易于阅读?
使用log4perl时,我使用的调试日志布局是:
这会产生非常详细的调试日志,例如:
这很好用,并提供了出色的调试数据。
但是,调试日志的每一行都包含不同的函数名称、pid 长度等。这使得每一行的布局不同,并且使得阅读调试日志比需要的要困难得多。
log4perl 中是否有办法格式化该行,以便调试元数据(直到实际日志消息的所有内容)在末尾用空格/制表符填充,并让实际消息从同一列文本开始?
perl - 如何旋转和压缩 Log4perl 日志文件?
据我所知,Log4Perl 或其在 CPAN 中的任何相关模块都不支持日志文件的旋转和压缩。
旋转可以通过使用来完成:
但是两个模块都不支持旋转和压缩。(Log::Dispatch::FileRotate 在它的待办事项列表中有它,但它目前没有实现)。
可以使用 Linux 中的标准Logrotate工具来执行此操作,方法是使用 Log::Log4perl::Appender::File 的 recreate_check_interval 或 recreate_check_signal。
从最初的测试来看,使用带有delaycompress选项的 Logrotate 似乎可以解决问题——即使在高负载的机器上,一旦文件被移动,log4perl 将继续记录到同一个文件句柄,直到信号被输出。
但是,如果没有使用 delaycompress,并且在日志文件的压缩和 Perl 程序捕获信号之间存在(甚至是轻微的延迟),则可能会丢失一些日志数据。
你怎么看?还有其他我们没有想到的选择吗?
perl - 如何在 Log4perl 中抑制输出到 stdout 和 stderr?
我有这个子来初始化我的记录器:
我只想在我的日志文件中有日志信息。我如何防止它记录到标准输出?
perl - 用于配置的 Log4perl 文档在哪里?
我是 Perl 的新手,在使用新的 CR 时,我停留在使用Log4perl包的 Perl 代码上。
已经开发的代码正在使用这个包,并且在这个包的配置文件中有这样的配置:
我可以在配置文件中获取有关这些参数的信息,并可能更改它们吗?
perl - 如何禁用特定类的 Log4perl 输出?
我想在项目中使用 Log4perl,但对某个类(在本例中为 Net::Amazon)禁用它。我以为这会很容易,但不知何故我失败了。
我尝试使用
不幸的是,Net::Amazon 的调试消息仍然打印到终端。这是为什么?我在这里做错了什么?
perl - 如何在 Log4perl 中只记录 INFO 级别?
log4perl 在配置文件中有一个阈值选项,它将记录该级别或更高级别的所有调用。是否可以将其设置为仅记录一种类型的呼叫?我只想记录级别为“INFO”的调用。
谢谢。
perl - 如何使用 Log4perl 和 Moose 报告行号?
与 Moose 一起使用时,是否可以让 Log4perl 正确显示日志事件的行号和包/类,而不是始终在第 99 行显示 Method::Delegation?
在我的例子中,我创建了一个属性 isa Log::Log4perl::Logger 并将各种日志记录级别委托给我的类(日志、警告、错误......)。这样做还会将Delegation.pm 显示为文件。
谢谢!
perl - 实用程序类中的日志记录
我想在几个实用程序类中采用日志记录,例如 DBI。使用 Log::Log4perl 的最佳实践是什么?
我认为继承 DBI(比如,MyDBI
)并覆盖那里的一些方法以使它们进行日志记录是可以的。但是分类有问题。如果您创建一个记录器
那么所有日志条目都属于MyDBI
并且很难过滤它们。MyDBI
所以对我来说,从调用模块(比如, )传递一个记录器似乎更好MyModule
,这样这个类别在语义上是正确的。第一个问题,一般可以吗?我的意思是,这种方法是否有任何隐藏的暗礁?
第二个问题,如何将记录器传递给MyDBI
?我有一个想法来声明一个全局变量,例如$MyDBI::logger
并在调用方法中设置:
传统上不喜欢全局变量。你能想出更好的方法吗?
编辑:当然,最好的代码是没有代码。caller
如果考虑到继承就足够了。
第三个问题,如果它们在层次上不相关,是否可以使用 Log::Log4perl 登录MyDBI
这两个类别?MyModule
perl - 如何判断 Log4perl 在运行期间是否发出任何警告?
我一直在许多脚本中广泛使用Log4perl。如果已记录任何WARN
或消息,我想扩充这些脚本以设置错误代码。ERROR
根据现有文档,我找不到任何明显的方法来做到这一点。
我想避免对我现有的脚本进行强力重写以添加对每条消息WARN
或ERROR
日志消息的检查;如果可能的话,我宁愿在脚本退出之前处理它,比如这个伪代码:
有什么简单的方法可以调用 Log4Perl 来确定当前记录器是否有某些级别的问题消息?