问题标签 [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 - 如何使我的 Log::Log4perl 记录器工作?
这是我的代码:
我要做的就是将消息记录到文件中,并显示级别。我明白这就是SimpleLayout
它的用途。我想在没有配置文件的情况下执行此操作。运行上面的代码会显示以下消息:
Log::Log4perl configuration looks suspicious: No loggers defined
perl - 使用 Log::Log4perl 制作自记录模块
有没有办法使用Log::Log4perl制作一个智能的自记录模块,即使在没有调用脚本未初始化 Log4perl 的情况下也可以将其操作记录到文件中?据我从文档中可以看出,使用 Log4perl 的唯一方法是在运行脚本中从配置中对其进行初始化,然后实现 Log4perl 的模块根据调用者的 Log4perl 配置调用自己的日志。
相反,我希望模块为 Log4perl 提供默认的初始化配置。这将为模块的类别提供默认的文件附加程序。然后,如果需要,我可以通过在调用者中使用不同的配置初始化 Log4perl 来覆盖此行为,并且希望一切都能正常工作。
这种防御性日志记录行为是否可能,或者我是否需要在每个调用我想要记录的模块的 .pl 脚本中依赖初始化 Log4perl?
perl - Log4Perl 将多个程序的日志记录捆绑到一个日志中
CPAN 上是否有任何 Logger 允许我将来自多个程序的日志捆绑到一个文件中,并在两个程序同时运行并并行调用 log4Perl 时同步并行日志记录。
背景是我使用一个自定义附加程序来编写电子邮件,我想将所有电子邮件捆绑在一个文件中作为备份,以防邮件服务器出现问题。
perl - Log4perl:使用 easy_init 分离 INFO 和 ERROR 文件
我目前正在使用以下方式将 INFO 及更高版本发送到 STDOUT:
如何将 ERROR 及更高版本发送到 STDERR?
perl - Log4perl:如何在运行时动态加载附加程序?
我想让模块在运行时管理它们的日志记录,但不要让所有东西都引用一个单一的整体配置文件。当处理在不同权限下运行的进程时,我真的不想处理需要能够访问系统上每个日志的每个进程,而它们只写入其中的一个子集。
但是,我在 Log4perl 手册中没有找到太多关于如何在运行时从配置文件初始化附加附加程序的文档。http://metacpan.org/pod/Log::Log4perl::Appender引用了一个 add_appender 方法,但它适用于实例化的 appender 对象而不是 conf 文件。它也没有定义 logger 对象和 logger->appender 关系。
我尝试让每个包从它自己的 conf 中初始化,但这只会在每次初始化时破坏现有配置。我想做的是类似的事情:
如何解析配置并将其添加到当前配置中?
编辑:使用包变量的问题在于,这只是各种类使用的 Moose 角色,几乎只是 Ether 在使用 Log::Log4perl 制作自记录模块中的答案的 MooseX::Role::Parameterized 版本。因此,我的记录器正在组合到使用它的库中,并且我没有每次使用它时都可以处理的全局变量。
尽管..
如果我在 MooseX::Role::Parameterized 角色块之外声明一个全局变量,是否每个使用该角色的类都使用相同的 conf 变量?
perl - 获取命令行选项及其值
我想在运行脚本后从用户命令中记录选项及其参数。
考虑这个命令:
...以及许多其他选项和值。我想要的输出是这样的(通过使用 log4perl):
我愿意:
但它不起作用。请帮忙。
perl - 如果 log4perl 不存在,如何让它创建日志目录?
如果在 log4perl 初始化时我的日志目录 ( /home/hss/Data/log/DataImport.log
) 不存在,那么我会收到以下错误:
有没有办法让它自己创建目录,而我不必在我的 log.conf 文件之外的任何地方指定目录?
log4j - 结合 log4j 和 log4perl 日志
我有一个 Java 应用程序,它使用 Runtime.exec 启动一个 Perl 程序,等待它返回然后继续。我希望 Java 应用程序的 log4j 输出和 Perl 程序的 log4perl 输出到同一个文件。
在我的 log4j.properties 文件中,我有:
log4j.appender.app=org.apache.log4j.DailyRollingFileAppender
log4j.appender.app.File=/path/app.log
log4j.appender.app.DatePattern=.yyyy-MM-dd
log4j.appender.app.Append=false
log4j.appender.app.layout=org.apache.log4j.PatternLayout
log4.appender.app.layout.ConversionPattern=%5p [%t] (%F:%L) %m%n
(我已将 Append 设置为 false,因为如果重新启动 Java 应用程序,我想覆盖同一天以前的任何日志文件。)
在 Perl 程序中,我有:
Log::Log4perl->easy_init({level => $DEBUG,
file => ">>/path/app.log"});
这导致 log4j 输出,然后是 log4perl 输出,转到同一个文件,但是当 Perl 程序完成时,Java 应用程序似乎无法再写入该文件。
我可以以某种方式在 Java 端重置我的文件句柄吗?我可以以某种方式将记录器传递给 Perl 程序而不是文件名吗?
我想将输出从两者发送到控制台,然后将其保存到文件中,但这对我来说会失去功能,因为我正在利用将不同级别的输出发送到控制台和文件。
perl - 为什么 USR1 似乎杀死了 Perl,而不是重新创建日志文件?
我有一个已添加日志记录的 Perl 脚本,由Log4perl提供。
脚本本身运行时间很长,我们还需要每天进行日志轮换/归档。
我选择使用内置的 Solaris logadm
,而不是使用Log::Dispatch::FileRotate,因为
- 我们正在尝试减少我们需要的 Perl 依赖项的数量,并且
- 我的印象是,在您的应用程序之外的操作系统级别执行此操作是首选/最强大的方法。
作为轮换的一部分,我还需要获取 Perl 脚本来刷新其文件句柄。根据Log4perl FAQ,您可以将其配置为侦听 USR1 信号,并在其上重新创建文件句柄:
但是,由于某种原因,每当我向 Perl 进程发送 USR1 信号时,我的 Perl 脚本就会退出。
我发送它:
一旦我这样做,Perl 进程似乎就死了。无论我是否将 Log4perl 配置为捕获 USR1,都会发生这种情况。
我也试过用USR2,效果一样。
在 Log4perl、Perl 或 Solaris 中,我在这里有什么明显的遗漏吗?
perl - 自记录 Perl 模块(没有 Moose)
我有与这里问的相同的问题,但不幸的是我无法安装 Moose,我认为那里描述的解决方案是 Moose 特有的。有人可以告诉我如何在老学校“使用基地”说话吗?
重申这个问题,我想让我的基类有一个使用 Log4perl 的自动日志记录机制,所以如果用户不做任何事情,我会得到一些合理的日志记录,但是如果我的类的用户需要/想要覆盖记录器,他们可以.