繁体   English   中英

在运行时覆盖回写日志格式的选项

[英]Option to override logback's logging format in runtime

有两种Java方法将调试打印到单个日志文件(apender)中。

是否可以将不同的日志记录格式应用于不同的方法?

例如...

  • MyClass.someMethod()%c - %{foo} %m%n一样打印
  • MyClass.anotherMethod()输出类似于%c %t %{bar} %m%n%n

(这些格式不应进行硬编码,而应来自外部来源,并且是运行时更改的主题。)

也许我们可以设置一个钩子/侦听器或类似的东西...

环境:Java 7+ / logback-core:0.9.28 / logback-classic:0.9.28

布局文档一样,我们可以在logback.xml定义自定义布局:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  <layout class="com.me.MyLayout" />
 </encoder>
</appender>

自定义布局的实现可以基于MDC做出决策:

public class MyLayout extends LayoutBase<ILoggingEvent> {
    public String doLayout(ILoggingEvent event) {
        if ("foo".equals(MDC.get("method"))) {
            return "a custom message for method `foo`\n";
        } else {
            return "a default message from my own layout\n";
        }
    }
}

客户代码:

MDC.put("method", "foo");
log.info("a from method foo");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM