我有 Log :: Log4perl 配置文件和屏幕两个appender,如下所示:
log4perl.logger.bc_log = INFO, bc_log, console
log4perl.appender.bc_log = Log::Log4perl::Appender::File
log4perl.appender.bc_log.filename = bc.log
log4perl.appender.bc_log.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.bc_log.layout.ConversionPattern = %d{ISO8601}%d{Z} %H %m%n
log4perl.appender.console = Log::Log4perl::Appender::Screen
log4perl.appender.console.stderr = 1
log4perl.appender.console.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.console.layout.ConversionPattern = %m%n
在我的程序中,所有输出显式转换为 utf8 (例如来自 cp1251 )以及我程序中的某处:
my $bc_log = Log::Log4perl->get_logger('bc_log');
$bc_log->info('Some-utf8-encoded-string');
所以消息以 utf8 进入文件和控制台,但我想 用于文件的 utf8 和用于一次性控制台的 cp866 。 我无法弄清楚 Log :: Log4perl 是否可行? 看起来像 Log :: Log4perl :: Appender :: File 没有编码选项。
答案 0 :(得分:0)
我创建了一个新的appender模块(通过复制原始 Log :: Log4perl :: Appender :: Screen )并添加了解码/编码,并使用它来输入 Log :: Log4perl ::我的代码中的Appender :: Screen 。