按类中的日志名称运行日志测试

问题描述 投票:0回答:1

我正在尝试为我的班级中的记录器创建一个测试。 类示例:

     public class Audit{
    
        private static final Logger LOGGER = LoggerFactory.getLogger(Audit.class);
        private static final Logger ERROR_LOG  = LoggerFactory.getLogger("ERROR");
        public static final Logger DEBUG_LOGGER = LoggerFactory.getLogger("DEBUG");

service.... {
}

}

测试我正在尝试运行,带有类名的测试,我正在获取主日志,但没有获取调试/错误日志:

    @Test
void testFailure() {
    
    Logger auditFailureLogger = (Logger) LoggerFactory.getLogger(Audit.class);
    ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
    listAppender.start();
    auditFailureLogger.addAppender(listAppender);

    audit.service(info);

    List<ILoggingEvent> logsList = listAppender.list;

    assertNotNull(logsList.get(0).getFormattedMessage());
}

如果我使用记录器名称(而不是类名)运行此测试,我会得到一个空列表:

  @Test
void testFailure() {
    
    Logger auditFailureLogger = (Logger) LoggerFactory.getLogger("ERROR");
    ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
    listAppender.start();
    auditFailureLogger.addAppender(listAppender);

    audit.service(info);

    List<ILoggingEvent> logsList = listAppender.list;

    assertNotNull(logsList.get(0).getFormattedMessage());
}

如何在测试中按名称而不是按类别获取日志?

java logback slf4j
1个回答
0
投票

经过大量测试,我能够运行测试:

      @Test
void testFailure() {
    
    Logger auditFailureLogger = (Logger) LoggerFactory.getLogger("ERROR");
    ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
    listAppender.start();
    auditFailureLogger.addAppender(listAppender);

    audit.service(info);

    List<ILoggingEvent> logsList = listAppender.list;

    assertNotNull(logsList.get(0).getFormattedMessage());
}

我已将 logback.xml 文件添加到测试资源中

    <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xml>
<configuration debug="true" scan="false">


  <!-- ============================================== -->
  <!-- Append messages to the failure audit  log file -->
  <!-- ============================================== -->
  <appender name="AUDIT_FAILURE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
      <pattern>TEST  %date{yyyy-MM-dd HH:mm:ss.SSS} %msg%n</pattern>
    </encoder>
  </appender>
  
  <logger additivity="false" level="ALL" name="ERROR">
    <appender-ref ref="AUDIT_FAILURE_FILE" />
  </logger>


</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.