首页 文章

使用Java中的日志记录框架在日志记录行之前打印新行

提问于
浏览
1

使用 Slf4j ,是否可以在 Logger 行之前打印一个新行,只需一行代码 .

Original code:

System.out.println();
logger.info("tmp file deleted, file path: {}", tmpFile.getAbsolutePath());

Questions:

  • 是否可以将第一行合并到上面代码中的第二行,同时仍然获得相同的输出?
    我知道用 \n 在日志行之后添加一个新行很容易,但是在日志行之前,没有额外的第一行 .

  • 如果这样的功能没有用,至少在某些情况下是这样吗?
    例如这样的方法:

Logger.info(int prefixNewLineCount, String format, Object... arguments)

第一个参数指定前缀emtpy行的计数 .

1 回答

  • 1

    这实际上取决于您使用的SLF4j的日志记录实现(logback,Log4j,JUL等) . 对于这种要求,我使用MDC(映射诊断上下文)做了类似下面的操作 . 如果这会有所帮助 .

    public class Test
    {
        private static final Logger LOGGER = LoggerFactory.getLogger( "TEST" );
    
        public static void main( String[] args ) throws InterruptedException
        {
            MDC.put( "newLine", "\n" );
    
            //your logic here
    
            LOGGER.log( Level.INFO, "log message one " );
            LOGGER.log( Level.INFO, "log message tow" );
            LOGGER.log( Level.INFO, "log message three" );
            LOGGER.log( Level.INFO, "log message four" );
        }
    
    }
    

    然后在log42配置文件中使用 %X{newLine} 为每条日志消息附加 '\n' .

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration monitorInterval="10">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%X{newLine} %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
            <File name="test" fileName=".\src\test\resources\test.log" />
        </Appenders>
        <Loggers>
            <Logger name="TEST" level="ALL">
                <AppenderRef ref="test"/>
            </Logger>
            <Root level="ALL">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>
    

    出局

    12:10:36.412 [main] INFO  tbx.TEST - log message one 
    
     12:10:36.418 [main] INFO  tbx.TEST - log message tow
    
     12:10:36.418 [main] INFO  tbx.TEST - log message three
    
     12:10:36.418 [main] INFO  tbx.TEST - log message four
    

相关问题