无法在控制台上获取调试日志

时间:2020-02-13 13:18:42

标签: spring-boot logging log4j2

我在spring boot应用程序中为log4j2.xml文件进行了以下配置,该配置适用于信息,错误,警告,但我无法在控制台上获取Debug的日志,请建议我在哪里执行进行更改以在控制台上打印调试日志。

<?xml version="1.0" encoding="UTF-8"?>

<Configuration monitorInterval="60">
    <Properties>
        <Property name="FUNCTION">project-name</Property>
    </Properties>


    <Appenders>
        <Console name="consoleOut" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ISO8601} %-5p  %-30c{1} [%-10t] %m%n" />
            <Filters>
                <ThresholdFilter level="FATAL" onMatch="DENY"
                    onMismatch="ACCEPT" />
                <ThresholdFilter level="DEBUG" />
            </Filters>
        </Console>


        <Console name="consoleError" target="SYSTEM_ERR">
            <PatternLayout pattern="%d{ISO8601} %-5p  %-30c{1} [%-10t] %m%n" />
            <Filters>
                <ThresholdFilter level="FATAL" />
            </Filters>
        </Console>

        <RollingFile name="logFile" fileName="./log/${FUNCTION}.log"
            filePattern="./log/${FUNCTION}.log-%i">
            <PatternLayout>
                <Pattern>%d{ISO8601} %-5p %-30c{1} [%-10t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
        </RollingFile>
    </Appenders>
	
    <Loggers>
        <Logger name="com.myclass" level="DEBUG" />
        <Root level="INFO">
            <AppenderRef ref="logFile" />
            <AppenderRef ref="consoleOut" />
            <AppenderRef ref="consoleError" />
        </Root>
    </Loggers>

</Configuration>

我也将登录的根目录级别更改为DEBUG,但它也没有帮助。

1 个答案:

答案 0 :(得分:0)

让我们逐步了解Log4j如何处理调试事件,假设该事件正在使用名称以“ com.myclass”开头的Logger。

  1. 没有全局过滤器,因此事件会绕过它们。
  2. 该事件已分配给具有DEBUG级别的“ com.myclass” LoggerConfig。任何带有DEBUG,INFO,WARN,ERROR或FATAL的事件将继续。 TRACE事件将被拒绝。因此活动将继续得到评估。
  3. 记录器上没有过滤器,因此该事件将继续进行评估。
  4. LoggerConfig没有Appender引用,因此该事件将渗透到根LoggerConfig。
  5. Root LoggerConfig具有3个AppenderRef,其中没有带过滤器,因此该事件将传递给每个过滤器。
  6. logFile Appender没有过滤器,因此将记录该事件。
  7. consoleOut Appender具有两个过滤器。第一个将拒绝任何致命事件并接受其他所有事件,因此应将调试,信息,警告和错误事件记录到控制台。由于已接受或拒绝所有内容,因此将忽略DEBUG过滤器。在这种情况下,调试事件将记录到system.out。
  8. 该事件传递到consoleError附加程序。它具有使用默认匹配条件的过滤器,因此将继续评估FATAL事件,并拒绝所有其他事件。因此,调试事件将不会记录到system.error。

因此,根据以上所述,您应该看到您的日志事件。这向我表明您仍在使用Spring Boot的默认日志记录配置,因为Spring Boot's documentation表示默认级别为info。