0

你好伙伴们,我有以下子程序,当事情变糟时,它应该会得到一个错误日志:

sub _log_warning {
    my $log = Log::Minimal::Instance->new(
        base_dir =>
          &config->current->{'log_reader'}->{'base_dir'},
        pattern => &config->current->{'log_reader'}->{'pattern'},
    );
    $log->infof("Could not register to DB. Got $_");
}

我用 Try::Tiny 激活

use Try::Tiny;
try { _log_to_database(); }
catch {
     _log_warning();
 };

为了检查这是否能很好地处理错误,我引发了一个错误,即丢失文件错误。我得到的日志是:

 2013-07-04T11:46:39 [INFO] Could not register to DB. Got ã<81><9d>ã<81>®ã<82><88>ã<81>    
 <86>ã<81>ªã<83><95>ã<82>¡ã<82>¤ã<83>«ã<82><84>ã<83><87>ã<82>£ã<83 ....

我看不懂这个。但是当我尝试不将错误输出为日志文件,而是在 STDOUT 中输出错误时,我得到了很好的消息:

 The try block died with: そのようなファイルやディレクトリはありません: /var/log/....

不过消息是日文的。当输出是日志文件而不是标准输出时,如何以正确的编码(日语)获取消息?我在centos上。

4

1 回答 1

0

这里有几件事需要考虑。但是,首先,Log::Server 来自哪里?我在 CPAN 上找不到。您可能需要配置它(或者,在更糟糕的情况下,修复它)以了解 Unicode。

于 2013-07-04T15:36:15.367 回答