gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:52:14 25 4
gpt4 key购买 nike

使用Slf4j,是否可以使用一行代码在记录器行之前打印新行。

原始代码:

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

问题:

  • 是否可以将上面代码中的第一行合并到第二行,同时仍然获得相同的输出?
    我知道使用 \n 在日志行之后添加新行很容易,但是在日志行之前而不需要额外的第一行呢?
  • 如果这样的功能尚不存在,那么您认为它可以轻松实现吗?至少在某些情况下它不会很有用吗?
    例如这样的方法:

    Logger.info(int prefixNewLineCount,字符串格式,对象...参数)

    其中第一个参数指定前缀空行的数量。

最佳答案

这实际上取决于您使用的 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

关于java - 使用 Java 中的日志框架在日志行之前打印新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53701280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com