如何在Perl中的模块之间使用Log4Perl?

前端之家收集整理的这篇文章主要介绍了如何在Perl中的模块之间使用Log4Perl?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我打算在我的模块中使用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在需要记录器的每个包中创建别名.

猜你在找的Perl相关文章