Log :: Log4perl:UTF-8中的一个appender,另一个是win32

时间:2018-04-17 12:03:33

标签: encoding appender perl5 log4perl

我有 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 没有编码选项。

1 个答案:

答案 0 :(得分:0)

我创建了一个新的appender模块(通过复制原始 Log :: Log4perl :: Appender :: Screen )并添加了解码/编码,并使用它来输入 Log :: Log4perl ::我的代码中的Appender :: Screen