【问题标题】:Custom Logger message format Java LoggerFactory.getLogger(getClass())自定义 Logger 消息格式 Java LoggerFactory.getLogger(getClass())
【发布时间】:2014-09-16 09:34:39
【问题描述】:

我需要更改标准日志行为,只需将 \n 符号替换为空格。 是否有可能在全局范围内处理 logger 的最终消息?

作为一种解决方案,我做了自定义 Appender,但我不喜欢这种方法的类型转换。

public class NonPrettyFileAppender extends ConsoleAppender<ILoggingEvent> {
@Override
protected void writeOut(ILoggingEvent event) throws IOException {
    final String origMsg = event.getMessage();
    final String newMsg = origMsg.replace("\n", " ");
    ((LoggingEvent) event).setMessage(newMsg);
    super.writeOut(event);
}

}

【问题讨论】:

    标签: java logging handler logback appender


    【解决方案1】:

    创建新的 PatternLayout 来处理事件消息似乎更合适。 它可以用于控制台和文件附加器

    public class NonPrettyPatternEncoder extends PatternLayoutEncoderBase<ILoggingEvent> {
    
    @Override
    public void start() {
        PatternLayout patternLayout = new NonPrettyPatternLayout();
        patternLayout.setContext(context);
        patternLayout.setPattern(getPattern());
        patternLayout.setOutputPatternAsHeader(outputPatternAsHeader);
        patternLayout.start();
        this.layout = patternLayout;
        super.start();
    }
    
    public static class NonPrettyPatternLayout extends PatternLayout {
        @Override
        protected String writeLoopOnConverters(ILoggingEvent event) {
            if (event.getLevel() == Level.ERROR) {
                return super.writeLoopOnConverters(event);
            } else {
                return super.writeLoopOnConverters(event).replace("\n", " ") + "\n";
            }
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多