Dropwizard默认的logback模式

4

如果没有配置logFormat,有人知道Dropwizard 0.7.1日志记录的默认格式模式吗?

我需要类似于以下内容:

%d{HH:mm:ss.SSS} %-5level [%X{id}] [%X{format}] [%thread]: %class{0}::%method:%line - %msg%n

1
根据源代码 io.dropwizard.logging.DropwizardLayout,它是%-5p [%d{ISO8601," + timeZone.getID() + "}] %c: %m%n%rEx。由于我不确定 timeZone 是否正确以及 setPattern 之前的其他行是否相关,因此将其作为注释留下。 - Natan
1
@user3280180 - 如果问题已经解决,请标记答案。 - Naman
1个回答

3

Logback使用实现Layout接口doLayout()方法将日志事件转换为可以输出的字符串,如文档所述。Dropwizard提供了一个扩展PatternLayout(它又是抽象PatternLayoutBase的扩展):

PatternLayout 接收一个日志事件并返回一个 String。然而,这个 String 可以通过调整 转换模式 来进行自定义。

public class DropwizardLayout extends PatternLayout {
    public DropwizardLayout(LoggerContext context, TimeZone timeZone) {
        super();
        setOutputPatternAsHeader(false);
        getDefaultConverterMap().put("ex", PrefixedThrowableProxyConverter.class.getName());
        getDefaultConverterMap().put("xEx", PrefixedExtendedThrowableProxyConverter.class.getName());
        getDefaultConverterMap().put("rEx", PrefixedRootCauseFirstThrowableProxyConverter.class.getName());
        setPattern("%-5p [%d{ISO8601," + timeZone.getID() + "}] %c: %m%n%rEx");
        setContext(context);
    }
}

这个的作用是:
  1. 确保禁用了outputPatternAsHeader,这是一个标志,它会在任何日志的顶部输出您想要的字符串模式。确认使用的模式的一种方法是在您的appender上启用此标志,如logback文档中所述。
  2. 覆盖了与打印异常相关的多个转换词,使用一个实现ThrowableProxyConverter的实现,该实现在堆栈跟踪前缀中加入感叹号。
  3. 将模式设置为"%-5p [%d{ISO8601," + timeZone.getID() + "}] %c: %m%n%rEx",使用传递的时区。如果不显式添加时区信息,logback将使用JVM的时区,否则使用GMT。如果这是可以接受的,您可以只使用%d,因为ISO8601格式是默认值。
  4. 设置上下文。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接