有两个Java方法在一个日志文件(apender)中执行它们的调试打印。
是否可以将不同的日志记录格式应用于不同的方法?
例如..。
MyClass.someMethod()打印像%c - %{foo} %m%nMyClass.anotherMethod()指纹,比如%c %t %{bar} %m%n%n。(这些格式不应该硬编码,而是来自外部源,是运行时更改的对象。)
也许我们可以设个钩子/听者之类的.
环境: Java 7+ / logback-core:0.9.28 /logback-经典:0.9.28
发布于 2016-12-06 21:05:27
通过布局文档,我们可以在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");https://stackoverflow.com/questions/40915916
复制相似问题