无法在控制台上获取调试日志
Not able to get Debug logs on Console
我的 spring 引导应用程序中的 log4j2.xml 文件有以下配置,配置正在处理信息、错误、警告,但我无法在我的控制台上获取调试日志请建议我应该在哪里执行更改以在控制台上打印调试日志。
<?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,但它也没有帮助。
让我们来看看 Log4j 将如何处理调试事件,假设该事件使用名称以 "com.myclass" 开头的记录器。
- 没有全局过滤器,因此事件会绕过它们。
- 事件分配给 "com.myclass" 级别为 DEBUG 的 LoggerConfig。任何带有 DEBUG、INFO、WARN、ERROR 或 FATAL 的事件都将继续。 TRACE 事件将被拒绝。所以该事件将继续评估。
- 记录器上没有过滤器,因此将继续评估事件。
- LoggerConfig 没有 Appender 引用,因此事件将渗透到根 LoggerConfig。
- Root LoggerConfig 有 3 个 AppenderRef,none 带有过滤器,因此事件将传递给它们中的每一个。
- logFile Appender 没有过滤器,因此事件将被记录。
- consoleOut Appender 有两个过滤器。第一个将拒绝任何 FATAL 事件并接受其他所有事件,因此应该将 DEBUG、INFO、WARN 和 ERROR 事件记录到控制台。 DEBUG 过滤器将被忽略,因为所有内容都已被接受或拒绝。在这种情况下,调试事件将记录到 system.out.
- 事件被传递到 consoleError appender。它有一个使用默认匹配标准的过滤器,因此将继续评估 FATAL 事件并拒绝所有其他事件。所以调试事件不会记录到 system.error.
所以根据上面的内容,您应该可以看到您的日志事件。这向我表明您仍在使用 Spring Boot 的默认日志记录配置,因为 Spring Boot's documentation 表示默认级别是信息。
我的 spring 引导应用程序中的 log4j2.xml 文件有以下配置,配置正在处理信息、错误、警告,但我无法在我的控制台上获取调试日志请建议我应该在哪里执行更改以在控制台上打印调试日志。
<?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,但它也没有帮助。
让我们来看看 Log4j 将如何处理调试事件,假设该事件使用名称以 "com.myclass" 开头的记录器。
- 没有全局过滤器,因此事件会绕过它们。
- 事件分配给 "com.myclass" 级别为 DEBUG 的 LoggerConfig。任何带有 DEBUG、INFO、WARN、ERROR 或 FATAL 的事件都将继续。 TRACE 事件将被拒绝。所以该事件将继续评估。
- 记录器上没有过滤器,因此将继续评估事件。
- LoggerConfig 没有 Appender 引用,因此事件将渗透到根 LoggerConfig。
- Root LoggerConfig 有 3 个 AppenderRef,none 带有过滤器,因此事件将传递给它们中的每一个。
- logFile Appender 没有过滤器,因此事件将被记录。
- consoleOut Appender 有两个过滤器。第一个将拒绝任何 FATAL 事件并接受其他所有事件,因此应该将 DEBUG、INFO、WARN 和 ERROR 事件记录到控制台。 DEBUG 过滤器将被忽略,因为所有内容都已被接受或拒绝。在这种情况下,调试事件将记录到 system.out.
- 事件被传递到 consoleError appender。它有一个使用默认匹配标准的过滤器,因此将继续评估 FATAL 事件并拒绝所有其他事件。所以调试事件不会记录到 system.error.
所以根据上面的内容,您应该可以看到您的日志事件。这向我表明您仍在使用 Spring Boot 的默认日志记录配置,因为 Spring Boot's documentation 表示默认级别是信息。