问题标签 [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 投票
1 回答
454 浏览

multithreading - 如何使用 Log4perl 在多线程 perl 应用程序中轮换日志文件

下面是我尝试使用 log4perl 在多线程应用程序中旋转日志文件的示例代码。但它工作正常,除非它是一个多线程应用程序。日志不会轮换,并且日志文件会增大。谁能指导我哪里出错了?

0 投票
1 回答
55 浏览

perl - 如何跨请求缓冲日志记录 - Perl,log4Perl

我正在寻找一种仅在给定时间范围内捕获特定阈值之后发生的特定问题的方法。

例如

  1. 我的 Web 应用程序使用一组通过 POST 发送的密钥
  2. 我将密钥列入白名单,因此我只在 POST 中寻找应用程序使用的特定密钥
  3. 但是,我想跟踪任何不寻常且不属于我的列表的键
  4. 但是,我不想跟踪未列出的密钥的每一次出现——以防这只是一个试图通过的机器人
  5. 但是,一旦一个特定的未列出的键达到阈值——比如一周内 100 次——我想记录它。

我如何使用 Perl 来完成这个任务,最好是使用 log4Perl 之类的东西?

谢谢!

0 投票
0 回答
91 浏览

perl - 将 log4j 配置转换为 log4perl 配置

如何将以下 log4j 配置转换为 log4perl 配置

我将其转换为

这是正确的吗?

0 投票
1 回答
361 浏览

perl - Perl sigdie 处理程序和评估

我在我的 Logger 模块中覆盖了我的 SIG die 处理程序,如下所示。

现在下面的程序按预期运行,将调用后处理。

但是,如果我包含我的记录器模块并添加use MyLogger代码在语句中失败eval并出现以下错误并且不会调用后处理。

[错误] 2015/04/27 22:19:07 Carp.pm:166> mkdir /random: Permission denied at ./test.pl line 11.

解决此问题的一个选项是添加本地 sigdie 句柄(如注释代码中所示)。

但是,我的记录器模块被许多脚本使用。

有没有办法修改我的 Logger 模块,以便在从 eval 块内部调用时抑制 ERROR 消息?

0 投票
1 回答
142 浏览

perl - 动态更改 Log::Dispatch::Email::MailSender 的电子邮件配置

我已将我的登录切换到使用 Log::Log4perl 并且我很难使用 Log::Dispatch::Email::MailSender 发送电子邮件日志。下面的代码片段是我的工作示例。

以下是我的问题:

  1. 为什么记录器不发送电子邮件,除非我添加 $logger = Log::Log4perl->get_logger(); to some_func 我不知道为什么它不能使用全球版本
  2. 如何访问记录器配置,以便在执行期间更改电子邮件主题以指示成功或失败。我基本上想在我的脚本中更改主题或动态地址

作为上面 Q2 在我的主程序中的解决方法,我现在使用 Log::Log4perl::Appender::String 来存储消息,然后使用 MIME::Lite 在我的脚本末尾发送一封电子邮件。我希望这一切都由记录器处理。谢谢

0 投票
1 回答
272 浏览

perl - Catalyst Log4perl:从应用配置配置配置文件位置

在 Catalyst 应用程序中,我需要指定 Log4perl 的配置文件位置。我能找到的所有例子都表明我应该从代码中做到这一点。但是,我希望能够在应用程序配置文件中指定它。这将允许我为不同的环境使用不同的日志配置,并从一个文件中管理所有这些。我还希望能够从应用配置文件中设置日志级别。

但是,似乎没有记录从应用程序配置文件配置记录器的方法。我尝试了多种语法变体,但 Catalyst 没有一个选择。也无法从 MyApp.pm(主应用程序模块)设置正确的配置文件名,因为在运行模块代码时配置尚不可用。

调试记录器初始化代码也没有帮助。我现在考虑的唯一真正方法是require从 MyApp.pm 获取配置文件,其中包含必要的配置。

因此,问题是:

  1. 有没有办法从 Catalyst 配置文件中指定 Log4perl 配置文件的位置?
  2. 有没有办法从配置文件中指定日志级别?
0 投票
1 回答
182 浏览

perl - 来自 Log4Perl 的额外日志

我正在使用 Log4Perl 模块进行日志记录。当我运行应用程序时,我在控制台上获得了一些 Log4Perl 模块日志:

我不知道他们为什么来。我也尝试了各种日志级别,但我仍然得到这些。

0 投票
1 回答
505 浏览

log4perl - log4perl 读取后如何更改“Logfile.filename”?

我有一个 .conf 文件

然后,Perl 脚本使用它:

我想知道如何读取/更改/替换 <'ENVTAG'> 令牌,以便在 Perl 应用程序中将其设置为:“dev”、“prod”、“testing”(此处为正则表达式?)...另外,如何在 Perl 应用程序中编辑“logfile.filename”?

谢谢。

0 投票
1 回答
231 浏览

perl - 是否可以注册一个函数来使用 Log::Log4perl 预处理日志消息?

这个例子中:

我可以漂亮地打印我的参考文献而不是ARRAY(0xFFDFKDJ). 但是每次都打那么长的代码太无聊了。我只是想:

$ref, $ref2, 和$array将被 Data::Dumper 转储。

有没有办法做到这一点?

UPD
在你的回答的帮助下,我做了补丁

现在你只需:

UPD2

或者你可以使用这个小模块

是的,当然你可以设置 'warp_message = 0' 并将 msg_filter 和 render 结合在一起。

0 投票
2 回答
179 浏览

perl - 如何将 log4perl 日志消息发送到 Amazon Cloudwatch?

我有一个在 Amazon EC2 实例上运行的 Perl/Plack/Postgres/Linux Web 应用程序。我即将开始在负载均衡器后面的多个实例上运行它,因此我需要一种方法将应用程序的日志消息收集到一个地方。

目前我使用一个 log4perl 配置文件,它使用 Log::Log4perl::Appender::File 将日志记录到磁盘上。一些日志消息被路由到多个日志文件,还有一些还由发送电子邮件的附加程序处理。我使用 Linux logrotate 实用程序进行轮换,但我根本不使用 syslog 来处理应用程序级别的消息。

将日志发送到 Amazon Cloudwatch 似乎是解决问题的好方法。虽然我可以在 CPAN 上找到各种模块来与 Amazon Cloudwatch 交互(感谢模块建议),但我找不到任何现成的 log4perl 附加程序来帮助解决这个问题。我需要自己写吗?

如果有什么不同,我已经在我的项目中使用了 AWS::Signature4 和 Amazon::S3::Thin。到目前为止,我已经避免使用具有严重依赖关系的模块,例如 Moose,但如果需要,我可以放松该策略。