【问题标题】:Dropwizard default logback patternDropwizard 默认 logback 模式
【发布时间】:2014-11-04 16:25:26
【问题描述】:

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

我需要这样的东西:

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

【问题讨论】:

  • 根据源代码io.dropwizard.logging.DropwizardLayout,是%-5p [%d{ISO8601," + timeZone.getID() + "}] %c: %m%n%rEx。由于我不确定 timeZone 以及 setPattern 之前的其他行是否相关,所以将此作为评论。
  • @user3280180 - 如果已解决,请标记答案。

标签: java logback dropwizard


【解决方案1】:

Logback 使用Layout interfacedoLayout() 方法的实现将日志记录事件转换为可以输出的字符串,如the documentation 中所述。 Dropwizard provides an extensionPatternLayout class(又是 abstract PatternLayoutBase class 的扩展):

PatternLayout 接受一个日志事件并返回一个String。然而, 这个String 可以通过调整 PatternLayout 的 conversion 来定制 模式

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 被禁用,这是一个输出您希望在任何日志顶部的字符串模式的标志。确认使用的模式的一种方法是在您的附加程序上启用此标志,如the logback documentation 中所述。
  2. 覆盖许多与打印异常相关的conversion words 以使用an implementation of ThrowableProxyConverter,该an implementation of ThrowableProxyConverter 在堆栈跟踪前加上感叹号。
  3. 将模式设置为"%-5p [%d{ISO8601," + timeZone.getID() + "}] %c: %m%n%rEx",使用传入的时区。如果您没有明确添加时区信息,logback 将使用JVM 的时区,否则使用GMT。如果可以接受,您可以只使用%d,因为ISO8601 格式是默认格式。
  4. 设置上下文。

【讨论】:

    猜你喜欢
    • 2022-08-13
    • 2013-11-30
    • 2013-07-10
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    相关资源
    最近更新 更多