调试日志未在控制台中打印且未生成日志文件

时间:2021-05-13 07:13:33

标签: java spring-boot log4j log4j2

嗨,我是 Log4j 的新手,请帮助我解决这个问题。

我的应用程序的一个模块以前使用了spring boot默认的通用记录器,但现在我正在为这个模块实现log4j

我面临的问题是,如果我添加带有调试日志的日志语​​句,它不会在控制台中打印出来,也不会生成日志文件。

POM.XML:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.6</version>
        </dependency>
<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.6</version>
        </dependency>

log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration strict="true" name="XMLConfig">
    <Appenders>
        <Appender type="Console" name="STDOUT">
            <Layout type="PatternLayout">
                 <Pattern>%d{[MM.dd.yyyy] | [HH:mm:ss]|}%level{FATAL=[FATAL],ERROR=[ERROR], WARN=[WARN], INFO=[INFO], DEBUG=[DEBUG],  TRACE=[TRACE]}|[%X{sessionID}]|[%F]|[%M]|[%L]|%m%throwable%n</Pattern>
            </Layout>
        </Appender>
     
      <RollingFile name="RollingFile" fileName="/data/storage/log/Test.log" filePattern="/data/storage/log/test.%d{yyyy-MM-dd}_%i.Logs.gz">
    
        
            <Layout type="PatternLayout">
                 <Pattern>%d{[MM.dd.yyyy] | [HH:mm:ss]|}%level{FATAL=[FATAL],ERROR=[ERROR], WARN=[WARN], INFO=[INFO], DEBUG=[DEBUG],  TRACE=[TRACE]}|[%X{sessionID}]|[%F]|[%M]|[%L]|%m%throwable%n</Pattern>
            </Layout>
            
        </RollingFile>       
    </Appenders>
    
    <Loggers>
        <logger name="com.test" additivity="false" level="ERROR">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="STDOUT"/> 
        </logger>
        
        <Root level="ERROR">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

我的班级:

Logger LOGGER = LogManager.getLogger(this.getClass().getName());

LOGGER.debug("DEBUG LOGS");

1 个答案:

答案 0 :(得分:0)

基本上

level = ERROR

表示该记录器或过滤器只会处理级别为 ERROR 或更高(更具体)的日志条目。 DEBUG 是较低的级别。在两个记录器的配置中将级别更改为 DEBUG(或 ALL)(或者,仅用于测试,调用 LOGGER.error("now a test ERROR");

Level 的文档:

<块引用>

用于识别事件严重性的级别。级别按从最具体到最少的顺序排列:

OFF (most specific, no logging)
FATAL (most specific, little data)
ERROR
WARN
INFO
DEBUG
TRACE (least specific, a lot of data)
ALL (least specific, all data)

通常,在过滤器或记录器上配置级别将导致该级别的日志事件以及更具体的事件通过过滤器。特殊级别 ALL 在用于日志记录配置时保证捕获所有级别。