自定义记录器消息格式Java LoggerFactory.getLogger(getClass())

自定义记录器消息格式Java LoggerFactory.getLogger(getClass()),java,logging,handler,logback,appender,Java,Logging,Handler,Logback,Appender,我需要更改标准日志行为,只需用空格替换\n符号即可。 是否可以全局处理记录器的最终消息 作为一种解决方案,我使用了自定义Appender,但我不喜欢这种方法中的类型转换 public class NonPrettyFileAppender extends ConsoleAppender<ILoggingEvent> { @Override protected void writeOut(ILoggingEvent event) throws IOException { fin

我需要更改标准日志行为,只需用空格替换\n符号即可。 是否可以全局处理记录器的最终消息

作为一种解决方案,我使用了自定义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);
}
公共类NonPrettyFileAppender扩展了ConsoleAppender{
@凌驾
受保护的无效写出(ILOGINGEVENT事件)引发IOException{
最后一个字符串origMsg=event.getMessage();
最后一个字符串newMsg=origMsg.replace(“\n”,”);
((LoggingEvent)事件).setMessage(newMsg);
超级注销(事件);
}

}

为处理事件消息创建新的PatternLayout似乎更合适。 它可以用于控制台和FileAppender

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";
        }
    }
}
public类NonPrettyPatternEncoder扩展了patternalayuencoderbase{
@凌驾
公开作废开始(){
PatternLayout=new NonPrettyPatternLayout();
patternLayout.setContext(context);
setPattern(getPattern());
patternLayout.setOutputPatternAsHeader(outputPatternAsHeader);
patternLayout.start();
this.layout=模式布局;
super.start();
}
公共静态类NonPrettyPatternLayout扩展了PatternLayout{
@凌驾
受保护的字符串写操作转换器(ILOGINGEVENT事件){
if(event.getLevel()==Level.ERROR){
返回super.writeloponconverter(事件);
}否则{
返回super.writeLoopOnConverters(事件)。替换(“\n”,“”“)+“\n”;
}
}
}
}