【问题标题】:Using Lombok @SLF4J annotation - how to add a date\time at the beginning of the log line?使用 Lombok @SLF4J 注释 - 如何在日志行的开头添加日期\时间?
【发布时间】:2021-10-07 21:30:13
【问题描述】:

在我的课程中使用 Lombok 的 @Slf4j 注释时,日志行在每个日志行的开头都缺少日期和时间。 如何将这些添加到行中?

@Slf4j
public abstract class DataScriptTestBase<T> extends CommonTestBase {

谢谢

【问题讨论】:

  • 通过在日志配置中写入正确的模式。 SLF4J 是一个包装器而不是一个日志实现。所以这取决于你的实际实现。
  • 您使用的是什么日志记录实现?您需要自己配置实现
  • SLF4J 是一个用于统一日志记录的 API,然后它委托给实际实现(log4j、jul、logback 等)。如果你只添加slf4j-api 什么都不会发生,因为没有实际的实现(只有一个 API)。
  • 如果 log4j 是您使用的,是的。虽然我不推荐使用 Log4j,而是使用像 Log4j2 或 Logback 这样更新的东西。
  • 不,您仍然可以使用 Slf4j 注释,它将使用 Slf4j 进行日志记录调用,然后委托给使用的实现。

标签: java logging slf4j lombok


【解决方案1】:
  1. @Slf4j 替换为@Log4j
  2. 在您需要的任何地方添加日志项 - log.info("this is a test log message")
  3. 创建 log4j.xml 文件
  4. 放在/resources目录中
  5. 运行测试套件
  6. 导航到/target/log4j-logs 并找到创建的日志文件

文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Properties>
    <Property name="basePath">./target/log4j-logs</Property>
  </Properties>
  <Appenders>
    <RollingFile name="File" fileName="${basePath}/printlogs.log" filePattern="${basePath}/printlogs__%d{yyyy-MM-dd_HH-mm-ss}.log" append="false">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level - %msg%n"/>
      <SizeBasedTriggeringPolicy size="10000 MB" />
    </RollingFile>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="File"/>
    </Root>
  </Loggers>
</Configuration>

【讨论】:

    猜你喜欢
    • 2015-10-25
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    相关资源
    最近更新 更多