Log4perl:使用 easy_init 分离 INFO 和 ERROR 文件

发布于 2024-10-11 14:02:01 字数 200 浏览 2 评论 0原文

我当前正在使用以下方式将 INFO 及以上内容发送到 STDOUT:

Log::Log4perl->easy_init({level=>("$INFO"), layout=>"%d %p - %m%n", file=>"STDOUT"});

如何将 ERROR 及以上内容发送到 STDERR?

I am currently sending INFO and above to STDOUT using:

Log::Log4perl->easy_init({level=>("$INFO"), layout=>"%d %p - %m%n", file=>"STDOUT"});

How can I send ERROR and above to STDERR?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静待花开 2024-10-18 14:02:01

对于 easy_init 设置来说,此任务可能太多了,因为您需要使用过滤器来实现该效果。通过正常设置,您可以执行以下操作:

use Log::Log4perl qw(:easy);

Log::Log4perl->init(\ qq{
    log4perl.logger = INFO, AppInfo, AppError

    # 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.AppError = Log::Log4perl::Appender::Screen
    log4perl.appender.AppError.stderr   = 1
    log4perl.appender.AppError.layout   = SimpleLayout
    log4perl.appender.AppError.Filter   = MatchError

    # Info appender
    log4perl.appender.AppInfo = Log::Log4perl::Appender::Screen
    log4perl.appender.AppInfo.stderr   = 0
    log4perl.appender.AppInfo.layout   = SimpleLayout
    log4perl.appender.AppInfo.Filter   = MatchInfo
});

ERROR "Error";
INFO "Info";

This task is probably too much for easy_init setup, because you need to use filters to achieve that effect. With normal setup you can do this:

use Log::Log4perl qw(:easy);

Log::Log4perl->init(\ qq{
    log4perl.logger = INFO, AppInfo, AppError

    # 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.AppError = Log::Log4perl::Appender::Screen
    log4perl.appender.AppError.stderr   = 1
    log4perl.appender.AppError.layout   = SimpleLayout
    log4perl.appender.AppError.Filter   = MatchError

    # Info appender
    log4perl.appender.AppInfo = Log::Log4perl::Appender::Screen
    log4perl.appender.AppInfo.stderr   = 0
    log4perl.appender.AppInfo.layout   = SimpleLayout
    log4perl.appender.AppInfo.Filter   = MatchInfo
});

ERROR "Error";
INFO "Info";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文