首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Log4Perl为每个脚本使用单独的文件?

如何让Log4Perl为每个脚本使用单独的文件?
EN

Stack Overflow用户
提问于 2011-07-07 13:44:48
回答 1查看 1.2K关注 0票数 2

常见问题 for Log4perl中,将解释如何编写配置文件以使用单独的文件来处理错误和信息。

这对于一个脚本很好,或者如果你想将几个脚本错误和信息混合到同一个错误和信息日志中。

问题

我非常希望每个脚本都有自己的错误和信息文件,而且我仍然能够使用

代码语言:javascript
复制
$logger->info()
$logger->error()

我把log.conf写对了吗?

我应该如何在每个脚本中启动Log4perl?

account.pl

代码语言:javascript
复制
use Log::Log4perl;
Log::Log4perl::init('log.conf');
my $logger = Log::Log4perl->get_logger('????');

log.conf

代码语言:javascript
复制
log4perl.logger.account = INFO, AccountErrorLogFile, AccountInfoLogFile, AccountInfoLogFile, SystemErrorLogFile, testScreen

# Filter to match level ERROR
log4perl.filter.MatchError = Log::Log4perl::Filter::LevelMatch
log4perl.filter.MatchError.LevelToMatch  = ERROR
log4perl.filter.MatchError.AcceptOnMatch = true

# Filter to match level INFO
log4perl.filter.MatchInfo  = Log::Log4perl::Filter::LevelMatch
log4perl.filter.MatchInfo.LevelToMatch  = INFO
log4perl.filter.MatchInfo.AcceptOnMatch = true

# Error appender
log4perl.appender.AccountErrorLogFile                          = Log::Log4perl::Appender::File
log4perl.appender.AccountErrorLogFile.filename                 = /logs/error--account-pl.log
log4perl.appender.AccountErrorLogFile.layout                   = Log::Log4perl::Layout::PatternLayout
log4perl.appender.AccountErrorLogFile.layout.ConversionPattern = %d [%3L] %m%n
log4perl.appender.AccountErrorLogFile.Filter                   = MatchError

# Info appender
log4perl.appender.AccountInfoLogFile                          = Log::Log4perl::Appender::File
log4perl.appender.AccountInfoLogFile.filename                 = /logs/info--account-pl.log
log4perl.appender.AccountInfoLogFile.layout                   = Log::Log4perl::Layout::PatternLayout
log4perl.appender.AccountInfoLogFile.layout.ConversionPattern = %d [%3L] %m%n
log4perl.appender.AccountInfoLogFile.Filter                   = MatchInfo

# Error appender
log4perl.appender.SystemErrorLogFile                          = Log::Log4perl::Appender::File
log4perl.appender.SystemErrorLogFile.filename                 = /logs/error--system-pl.log
log4perl.appender.SystemErrorLogFile.layout                   = Log::Log4perl::Layout::PatternLayout
log4perl.appender.SystemErrorLogFile.layout.ConversionPattern = %d [%3L] %m%n
log4perl.appender.SystemErrorLogFile.Filter                   = MatchError

# Info appender
log4perl.appender.SystemInfoLogFile                          = Log::Log4perl::Appender::File
log4perl.appender.SystemInfoLogFile.filename                 = /logs/info--system-pl.log
log4perl.appender.SystemInfoLogFile.layout                   = Log::Log4perl::Layout::PatternLayout
log4perl.appender.SystemInfoLogFile.layout.ConversionPattern = %d [%3L] %m%n
log4perl.appender.SystemInfoLogFile.Filter                   = MatchInfo

# Development Appender
log4perl.appender.testScreen                          = Log::Log4perl::Appender::Screen
log4perl.appender.testScreen.stderr                   = 0
log4perl.appender.testScreen.layout                   = Log::Log4perl::Layout::PatternLayout
log4perl.appender.testScreen.layout.ConversionPattern = %-5p [%3L] %m%n
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-07 14:51:46

解决方案:

log.conf

代码语言:javascript
复制
log4perl.logger.account = INFO, AccountErrorLogFile, AccountInfoLogFile, testScreen
log4perl.logger.system  = INFO, SystemErrorLogFile, SystemInfoLogFile, testScreen

account.pl

代码语言:javascript
复制
Log::Log4perl::init('/var/www/useradmin/cgi-bin/log.conf');
my $logger = Log::Log4perl->get_logger('account');

system.pl

代码语言:javascript
复制
Log::Log4perl::init('/var/www/useradmin/cgi-bin/log.conf');
my $logger = Log::Log4perl->get_logger('system');
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6611586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档