加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在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在需要记录器的每个包中创建别名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读