问题标签 [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 回答
1462 浏览

perl - 如何在 Log::Log4perl 中设置两个具有不同日志级别的附加程序?

我有一个带有两个附加程序(一个屏幕和另一个文件)的记录器。我想要一个具有可以更改的可变日志级别的屏幕附加程序和无论如何都会记录所有内容的文件附加程序。因此,例如,您可以禁用任何到屏幕的输出(屏幕附加程序),但在您的日志文件(文件附加程序)中将完整的日志记录到 TRACE 级别。我成功地更改了 Screen appender,但我无法将同一记录器的 File appender 设置为 TRACE 级别。我尝试使用不同的阈值设置,但没有成功。

0 投票
1 回答
117 浏览

perl - log4perl 从另一个包中运行,不会触发通过电子邮件发送的消息

在使用 log4perl 通过电子邮件发送消息时,我看到了无法解释的行为。

因此,以下测试脚本可以正常工作,并且可以毫无问题地发送电子邮件:

Log::Dispatch::Email::SSMTP是我编写的使用 ssmtp 命令发送电子邮件的模块。

当这个相同的确切代码被移动到与我的原始脚本相同目录中的另一个文件中的另一个包时,奇怪就开始了。当我这样做并在我的原始脚本中使用该包时,不会发送任何电子邮件,也不会抛出任何错误。

但是,如果我改变:

Log::Dispatch::Email::SSMTP

Log::Log4perl::Appender::Screen

当我运行我的脚本时,它会在屏幕上打印出“hi”。

因此,如果 log4perl 在将消息发送到屏幕时有效,为什么在尝试发送电子邮件时它不起作用?为什么相同的代码会从原始脚本而不是包中触发电子邮件?同样,没有错误被抛出或任何类型的迹象表明出现问题。而且我已经验证我的模块加载了打印语句。所以我的模块的代码肯定会被加载,但电子邮件仍然没有触发。

更新 这是注释中的每个请求不起作用时的代码。

maillog.pl

这是Testy.pm包:

这是我的SSMTP模块位于/home/steve/perl/perl-lib/Log/Dispatch/Email/SSMTP

当我运行./maillog.pl时,在使用包中的代码时不会发送电子邮件Testy(相同的代码在maillog.pl文件中有效。但是,如果我取消注释Log::Dispatch::Email::SSMTP并替换为Log::Log4perl::Appender::Screen它有效。

更新 #2 如果我更改Log::Log4perl::Appender::ScreenLog::Dispatch::Screen也可以。所以也许会出现某种错误Log::Dispatch::Email

0 投票
2 回答
114 浏览

perl - 将重要事件消息定向到单独的 Log::Log4perl 记录器

我需要将重要事件消息收集到单独的日志文件中。(常规日志相当臃肿,用于维护,而用户只对很少的事件感兴趣。)

这些事件与级别无关,尽管所有 ERROR 级别和向上事件都被认为是“重要的”。许多此类事件属于 INFO 或 WARN 级别。因此,水平阈值或匹配似乎不是答案。

此外,事件不限于层次结构的给定分支。这些可以来自整个应用程序,所以“类别”似乎也不适合,或者是吗?

编辑: 目前,我有一个 INFO 级别的常规、维护记录器和一个 WARN 级别的屏幕记录器

有没有办法用 Log::Log4perl 实现这样的记录器?

问候

梅尔

0 投票
1 回答
663 浏览

perl - 如何在我的 Log::Log4perl 配置文件中使用 Perl 变量?

我想在 Log::Log4perl 配置文件中使用我的脚本中的 Perl 变量。我阅读了文档,发现我可以使用子例程,但如果可能的话,我想做得更简单一些。

我想为我的附加程序设置文件名:

但是这样做,它是一个固定值。

我在脚本中的变量中有文件名,并希望在运行时使用它:

这是子程序:

这可行,但我想避免在我的脚本中使用 sub,因为返回值非常简单。

文档说:

以字符串开头的每个值sub {...都被解释为在应用程序解析配置时要执行的 Perl 代码......

所以我尝试了这样的事情,但没有奏效:

有没有办法在我的脚本中没有 sub 的情况下获得变量的结果?

0 投票
1 回答
217 浏览

perl - 如何使用 Log4perl 打印部分堆栈跟踪?

使用Log4perl,我知道我可以使用 %T 格式字符串包含完整的堆栈跟踪。

有没有办法打印部分堆栈跟踪?说,前N级?

0 投票
1 回答
555 浏览

perl - 如何使用 Jenkins 安装 Log4perl 模块

我对 Jenkins 和 Perl 很陌生,我正在尝试使用 Jenkins Job 安装 Log4perl 模块。下面是我在 Jenkins 的 Execute shell 框中使用的命令

下面是 Jenkins 控制台日志消息

在日志消息中它说

警告:无法安装 Log::Log4Perl,不知道它是什么。

我不确定我是否应该忽略上述声明。另外如何确认log4perl模块是否安装成功。

0 投票
0 回答
44 浏览

perl - 如果未安装 log4perl,则在 perl 模块中优雅地回退的最佳实践

好的,所以我正在尝试学习正确使用 log4perl。

似乎我可以编写一个使用 log4perl 的模块,但也可以分发到未安装 log4perl 并且仍然运行而不会失败,只是不记录的系统。如果我use Log::Log4Perl qw(:easy);在模块中,编译失败:

基本上,log4perl 用户在不强制的情况下在模块中启用 log4perl 兼容性的标准和最佳实践是什么?这似乎是应该很普遍的东西,但我找不到它来挽救我的生命。

提前致谢。

编辑:感谢您的反馈!我已经编辑了这个问题,以反映在这种情况下我正在寻找 log4perl 用户中的最佳实践,因为这肯定log4perl 用户之间的常见问题......对吗?

0 投票
1 回答
1791 浏览

perl - Log4perl 缺少初始化

我写了一个 A 类,我在其中定义和初始化了一个 rootlogger

在 AI 的一个子类中想使用这个记录器

运行应用程序时,我收到消息

Log4perl:似乎没有发生初始化。忘记调用 init()?

为什么init无法识别?

KDJ

0 投票
1 回答
241 浏览

perl - 如何使用 Log::Log4perl 记录时区?

我们使用Log::Log4perl来记录当前日期,如下所示:

有没有办法记录时区?

0 投票
1 回答
201 浏览

perl - Log4perl 单例使用

我是 Log4perl 的新手,我想弄清楚为什么我在下面的设置中得到了两个不同的记录器。我的理解是这应该是一个单例并且调用 get_logger() 每次都会返回相同的对象实例。

测试.pm

测试.pl

输出