【问题标题】:Log::Log4perl: one appender to the file in UTF-8 and another to the screen in CP866 on win32Log::Log4perl:一个附加到 UTF-8 文件的附加程序,另一个附加到 Win32 上 CP866 的屏幕
【发布时间】:2018-04-17 12:03:33
【问题描述】:

我有 Log::Log4perl 配置,其中包含两个附加到文件和屏幕的附加程序,如下所示:

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

【问题讨论】:

    标签: encoding appender perl log4perl


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-06
      • 2019-08-15
      • 2020-09-13
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      相关资源
      最近更新 更多