问题标签 [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.

0 投票
2 回答
1244 浏览

perl - 如何使 log4perl 输出更易于阅读?

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

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

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

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

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

0 投票
3 回答
4430 浏览

perl - 如何旋转和压缩 Log4perl 日志文件?

据我所知,Log4Perl 或其在 CPAN 中的任何相关模块都不支持日志文件的旋转和压缩。

旋转可以通过使用来完成:

  1. 日志::Log4perl::Appender::文件
  2. 日志::调度::文件旋转

但是两个模块都不支持旋转压缩。(Log::Dispatch::FileRotate 在它的待办事项列表中有它,但它目前没有实现)。

可以使用 Linux 中的标准Logrotate工具来执行此操作,方法是使用 Log::Log4perl::Appender::File 的 recreate_check_interval 或 recreate_check_signal。

从最初的测试来看,使用带有delaycompress选项的 Logrotate 似乎可以解决问题——即使在高负载的机器上,一旦文件被移动,log4perl 将继续记录到同一个文件句柄,直到信号被输出。

但是,如果没有使用 delaycompress,并且在日志文件的压缩和 Perl 程序捕获信号之间存在(甚至是轻微的延迟),则可能会丢失一些日志数据。

你怎么看?还有其他我们没有想到的选择吗?

0 投票
2 回答
1560 浏览

perl - 如何在 Log4perl 中抑制输出到 stdout 和 stderr?

我有这个子来初始化我的记录器:

我只想在我的日志文件中有日志信息。我如何防止它记录到标准输出?

0 投票
2 回答
349 浏览

perl - 用于配置的 Log4perl 文档在哪里?

我是 Perl 的新手,在使用新的 CR 时,我停留在使用Log4perl包的 Perl 代码上。

已经开发的代码正在使用这个包,并且在这个包的配置文件中有这样的配置:

我可以在配置文件中获取有关这些参数的信息,并可能更改它们吗?

0 投票
2 回答
867 浏览

perl - 如何禁用特定类的 Log4perl 输出?

我想在项目中使用 Log4perl,但对某个类(在本例中为 Net::Amazon)禁用它。我以为这会很容易,但不知何故我失败了。

我尝试使用

不幸的是,Net::Amazon 的调试消息仍然打印到终端。这是为什么?我在这里做错了什么?

0 投票
1 回答
162 浏览

perl - 如何在 Log4perl 中只记录 INFO 级别?

log4perl 在配置文件中有一个阈值选项,它将记录该级别或更高级别的所有调用。是否可以将其设置为仅记录一种类型的呼叫?我只想记录级别为“INFO”的调用。

谢谢。

0 投票
2 回答
3479 浏览

perl - 如何将 Perl 警告捕获到 Log4perl 日志中?

Log4perl是一个很棒的日志记录工具。

warnings pragma 也是一个必不可少的工具。

但是,当 Perl 脚本作为守护进程运行时,Perl 警告会打印到 STDERR 中,没有人可以看到它们,而不是打印到相关程序的 Log4perl 日志文件中。

有没有办法将 Perl 警告捕获到 Log4perl 日志中?

例如,此代码将很好地记录到日志文件中,但如果它作为守护程序运行,则 Perl 警告将不会包含在日志中:

这仍然会打印到 STDERR:

并且日志文件没有捕捉到这个警告。

0 投票
2 回答
680 浏览

perl - 如何使用 Log4perl 和 Moose 报告行号?

与 Moose 一起使用时,是否可以让 Log4perl 正确显示日志事件的行号和包/类,而不是始终在第 99 行显示 Method::Delegation?

在我的例子中,我创建了一个属性 isa Log::Log4perl::Logger 并将各种日志记录级别委托给我的类(日志、警告、错误......)。这样做还会将Delegation.pm 显示为文件。

谢谢!

0 投票
1 回答
845 浏览

perl - 实用程序类中的日志记录

我想在几个实用程序类中采用日志记录,例如 DBI。使用 Log::Log4perl 的最佳实践是什么?

我认为继承 DBI(比如,MyDBI)并覆盖那里的一些方法以使它们进行日志记录是可以的。但是分类有问题。如果您创建一个记录器

那么所有日志条目都属于MyDBI并且很难过滤它们。MyDBI所以对我来说,从调用模块(比如, )传递一个记录器似乎更好MyModule,这样这个类别在语义上是正确的。第一个问题,一般可以吗?我的意思是,这种方法是否有任何隐藏的暗礁?

第二个问题,如何将记录器传递给MyDBI?我有一个想法来声明一个全局变量,例如$MyDBI::logger并在调用方法中设置:

传统上不喜欢全局变量。你能想出更好的方法吗?

编辑:当然,最好的代码是没有代码。caller如果考虑到继承就足够了。

第三个问题,如果它们在层次上不相关,是否可以使用 Log::Log4perl 登录MyDBI这两个类别?MyModule

0 投票
2 回答
267 浏览

perl - 如何判断 Log4perl 在运行期间是否发出任何警告?

我一直在许多脚本中广泛使用Log4perl。如果已记录任何WARN或消息,我想扩充这些脚本以设置错误代码。ERROR根据现有文档,我找不到任何明显的方法来做到这一点。

我想避免对我现有的脚本进行强力重写以添加对每条消息WARNERROR日志消息的检查;如果可能的话,我宁愿在脚本退出之前处理它,比如这个伪代码:

有什么简单的方法可以调用 Log4Perl 来确定当前记录器是否有某些级别的问题消息?