spring-boot - 无法在控制台上获取调试日志
问题描述
我的 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,但它也没有帮助。
解决方案
让我们了解一下 Log4j 将如何处理调试事件,假设该事件正在使用名称以“com.myclass”开头的 Logger。
- 没有全局过滤器,因此事件会绕过它们。
- 该事件被分配给具有 DEBUG 级别的“com.myclass”LoggerConfig。任何带有 DEBUG、INFO、WARN、ERROR 或 FATAL 的事件都将继续。TRACE 事件将被拒绝。所以该事件将继续被评估。
- 记录器上没有过滤器,因此将继续评估事件。
- LoggerConfig 没有 Appender 引用,因此事件将渗透到根 LoggerConfig。
- Root LoggerConfig 有 3 个 AppenderRefs,没有过滤器,因此事件将被传递给它们中的每一个。
- logFile Appender 没有过滤器,因此将记录事件。
- consoleOut Appender 有两个过滤器。第一个将拒绝任何 FATAL 事件并接受其他所有事件,因此应将 DEBUG、INFO、WARN 和 ERROR 事件记录到控制台。DEBUG 过滤器将被忽略,因为所有内容都已被接受或拒绝。在这种情况下,调试事件将被记录到 system.out。
- 该事件被传递给 consoleError appender。它有一个使用默认匹配标准的过滤器,因此将继续评估 FATAL 事件并拒绝所有其他事件。因此调试事件不会被记录到 system.error 中。
所以根据上面你应该看到你的日志事件。这向我表明您仍在使用 Spring Boot 的默认日志记录配置,因为Spring Boot 的文档表明默认级别是 info。
推荐阅读
- java - DDMS 无法在 Mac OS 上启动
- c++ - C++ 把一个词换成另一个词
- c# - Regex.Split(多个空格)
- python - Python:从 A 类中的 B 类调用函数返回 AttributeError
- apache - 如何在不创建新子目录的情况下获取要在父目录中处理的 URL 的最后部分
- mysql - 如何在 R 中转义撇号,以便将字符串插入 MySQL 表
- javascript - 试图将标签添加到 d3,无法找出文本标签
- python - 由于 window-build-tools 从命令行运行脚本的 Python 错误
- google-apps-script - Google Apps 脚本 - 格式化特定工作表中的列
- amazon-web-services - 有什么方法可以通过 AWS 上的配置来限制 s3 存储桶的大小