如何在Perl中的模块之间使用Log4Perl?
发布时间:2020-12-16 06:20:43 所属栏目:大数据 来源:网络整理
导读:我打算在我的模块中使用Log4Perl进行日志记录. 我的代码结构是这样的 我有Start.PL验证一些参数.我有几个相互链接的模块(PM)文件(用于这些PL和PM文件) 我有一个Logger.PM,其中我有一个创建日志对象的方法InitiateLogger() $log = Log::Log4perl-get_logger("
我打算在我的模块中使用Log4Perl进行日志记录.
我的代码结构是这样的 我有Start.PL验证一些参数.我有几个相互链接的模块(PM)文件(用于这些PL和PM文件) 我有一个Logger.PM,其中我有一个创建日志对象的方法InitiateLogger() $log = Log::Log4perl->get_logger("MyLog"); 我调用这个方法Logger :: InitiateLogger();在Start.pl中 这是我的问题 >如何跨模块使用相同的$log(PM文件) 如果有人向我澄清这些观点会很好. 解决方法
您可以使用我们将$log声明为包变量,并使用其详细的完全限定名称在任何需要的地方使用实例:
Package::Name::$log->info( 'test' ); 在完成限定名称后,您可以在typeglob赋值后使用别名: #!/usr/bin/env perl package Package::Name; use strict; use Log::Log4perl qw(:easy); Log::Log4perl->easy_init( $ERROR ); our $log = get_logger(); package main; use v5.12; use strict; *log = $Package::Name::log; say $log; 产量: Log::Log4perl::Logger=HASH(0x230ff20) 在您的情况下,Start.pl中的logger对象的完全限定名称是$main :: log.您可以使用* log = $main :: log在需要记录器的每个包中创建别名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |