如何在运行时更改log4perl appender的过滤器?

如何在运行时更改log4perl appender的过滤器?,第1张

概述我一直试图弄清楚我是否可以在运行更改appender的过滤器,我已经通过配置文件定义了. log4perl.filter.M1 = Log::Log4perl::Filter::LevelMatchlog4perl.filter.M2 = Log::Log4perl::Filter::LevelMatchlog4perl.filter. 我一直试图弄清楚我是否可以在运行时更改appender的过滤器,我已经通过配置文件定义了.

@H_419_8@

@H_419_8@

log4perl.filter.M1               = Log::Log4perl::Filter::LevelMatchlog4perl.filter.M2               = Log::Log4perl::Filter::LevelMatchlog4perl.filter.M1.LevelToMatch  = INFOlog4perl.filter.M1.AcceptOnMatch = truelog4perl.filter.M2.LevelToMatch  = WARNlog4perl.filter.M2.AcceptOnMatch = truelog4perl.filter.MyBoolean0       = Log::Log4perl::Filter::Booleanlog4perl.filter.MyBoolean0.logic = M1log4perl.filter.MyBoolean1       = Log::Log4perl::Filter::Booleanlog4perl.filter.MyBoolean1.logic = M1 || M2log4perl.appender.SCREEN.Filter  = MyBoolean0

我想将此筛选器从MyBoolean0更改为SCREEN更改为MyBoolean1,但是在程序开始运行后执行此 *** 作.@H_419_8@

使用Data :: Dumper查看SCREEN的APPENDER_BY_name哈希显示以下内容:@H_419_8@

@H_419_8@

$VAR1 = bless( {     'appender' => bless( {                            'Filter' => 'MyBoolean0','color' => {......     'filter' => bless( {·                          'params' => {·                                        'M3' => bless( {·                                                         'LevelToMatch' => 'ERROR','name' => 'M3','AcceptOnMatch' => 1                                                       },'Log::Log4perl::Filter::LevelMatch' ),'M1' => bless( {·                                                         'LevelToMatch' => 'INFO','name' => 'M1','M2' => bless( {·                                                         'LevelToMatch' => 'WARN','name' => 'M2','Log::Log4perl::Filter::LevelMatch' )                                      },'name' => 'MyBoolean0','eval_func' => sub { "DUMMY" },'logic' => 'M1 || M2 || M3'                        },'Log::Log4perl::Filter::Boolean' ),'warp_message' => undef,'name' => 'SCREEN'   },'Log::Log4perl::Appender' );

但是这个HASH的混乱对我来说似乎很骇人听闻.有没有更好的方法来更改appender的过滤器?@H_419_8@解决方法 您可以使用未记录的appender属性过滤器:

@H_419_8@

@H_419_8@

$Log::Log4perl::Logger::APPENDER_BY_name{'SCREEN'}->filter(    Log::Log4perl::Filter::by_name('MyBoolean1'));

您也可以使用两个appender:@H_419_8@

@H_419_8@

log4perl.appender.SCREEN0.Filter = MyBoolean0log4perl.appender.SCREEN1.Filter = MyBoolean1

并在运行时更改它:@H_419_8@

@H_419_8@

$logger->remove_appender('SCREEN0',1);$logger->add_appender(    Log::Log4perl::Config::create_appender_instance(        $Log::Log4perl::Config::olD_CONfig,'SCREEN1',\%Log::Log4perl::Logger::APPENDER_BY_name    ));
总结

以上是内存溢出为你收集整理的如何在运行时更改log4perl appender的过滤器?全部内容,希望文章能够帮你解决如何在运行时更改log4perl appender的过滤器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1255389.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存