无法获取登录日期 Spring 启动
Cannot get date to be logged in Spring Boot
我有以下日志记录配置:
logging:
level:
com.dashboard: debug
org:
springframework:
jdbc:
core:
JdbcTemplate: debug
StatementCreatorUtils: trace
pattern:
# console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
# dateformat: "yyyy-MM-dd HH:mm:ss.SSS"
# console: '%date{"yyyy/MM/dd HH:mm:ss,SSS", UTC} [%p] [%t] %M\(%F:%L\) - %msg%n'
# console: %d{yyyy-MM-dd HH:mm:ss} - %msg%n
然而,当我 运行 应用程序时,我在日志中看不到日期:
11:55:13,589 DEBUG [ ...
我尝试了上面 pattern.console
和 pattern.dateformat
的不同值和组合,但它们没有任何效果。
有趣的是选项
logging:
level:
com.dashboard: debug
确实有效果。它是应用程序包,并且以调试级别登录。当它关闭时,它不会被记录。
使用slf4j。
问题是该应用程序是一个 gradle 项目,它使用其他 gradle 项目作为依赖项,并且它们似乎使用所有可能的现有 loggers/libs。我在应用程序上 运行 gradle dependencies
然后使用 grep 查看它有什么。
这是一个摘录:
+--- org.slf4j:slf4j-api:1.7.25
| +--- org.slf4j:slf4j-api:1.7.25
| | +--- org.slf4j:slf4j-api:1.7.25
| | | +--- org.slf4j:slf4j-api:1.7.25
| | | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | | +--- org.apache.logging.log4j:log4j-to-slf4j:2.11.1
| | | | | | +--- org.slf4j:slf4j-api:1.7.25
| | | | | | \--- org.apache.logging.log4j:log4j-api:2.11.1
| | | | | \--- org.slf4j:jul-to-slf4j:1.7.25
| | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | +--- org.slf4j:slf4j-api:1.7.25
| | | | | | +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.25
| | | | | +--- org.slf4j:slf4j-api:1.7.0 -> 1.7.25
| | | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25
| | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25
| | | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | | \--- org.slf4j:slf4j-api:1.7.25
...
我不确定他们的某些配置是否比我的应用程序 application.yml
中的配置具有更高的优先级...
但我确定我的应用程序中的设置应该覆盖所有内容。
困难的部分是理解是什么 logger/configuration 影响了行为。所以我决定在项目目录中 grep
for hh:mm:ss,SSS
(在日志中看到 secs 和 ms 之间的逗号作为分隔符)。结果是其他模块中有 3 logback.xml 个文件。他们没有日期格式。我在我的应用程序模块中创建了 logback.xml 并包含了日期格式。之后日期出现在控制台输出中。
我有以下日志记录配置:
logging:
level:
com.dashboard: debug
org:
springframework:
jdbc:
core:
JdbcTemplate: debug
StatementCreatorUtils: trace
pattern:
# console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
# dateformat: "yyyy-MM-dd HH:mm:ss.SSS"
# console: '%date{"yyyy/MM/dd HH:mm:ss,SSS", UTC} [%p] [%t] %M\(%F:%L\) - %msg%n'
# console: %d{yyyy-MM-dd HH:mm:ss} - %msg%n
然而,当我 运行 应用程序时,我在日志中看不到日期:
11:55:13,589 DEBUG [ ...
我尝试了上面 pattern.console
和 pattern.dateformat
的不同值和组合,但它们没有任何效果。
有趣的是选项
logging:
level:
com.dashboard: debug
确实有效果。它是应用程序包,并且以调试级别登录。当它关闭时,它不会被记录。
使用slf4j。
问题是该应用程序是一个 gradle 项目,它使用其他 gradle 项目作为依赖项,并且它们似乎使用所有可能的现有 loggers/libs。我在应用程序上 运行 gradle dependencies
然后使用 grep 查看它有什么。
这是一个摘录:
+--- org.slf4j:slf4j-api:1.7.25
| +--- org.slf4j:slf4j-api:1.7.25
| | +--- org.slf4j:slf4j-api:1.7.25
| | | +--- org.slf4j:slf4j-api:1.7.25
| | | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | | +--- org.apache.logging.log4j:log4j-to-slf4j:2.11.1
| | | | | | +--- org.slf4j:slf4j-api:1.7.25
| | | | | | \--- org.apache.logging.log4j:log4j-api:2.11.1
| | | | | \--- org.slf4j:jul-to-slf4j:1.7.25
| | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | +--- org.slf4j:slf4j-api:1.7.25
| | | | | | +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.25
| | | | | +--- org.slf4j:slf4j-api:1.7.0 -> 1.7.25
| | | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25
| | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25
| | | | | | \--- org.slf4j:slf4j-api:1.7.25
| | | | | \--- org.slf4j:slf4j-api:1.7.25
...
我不确定他们的某些配置是否比我的应用程序 application.yml
中的配置具有更高的优先级...
但我确定我的应用程序中的设置应该覆盖所有内容。
困难的部分是理解是什么 logger/configuration 影响了行为。所以我决定在项目目录中 grep
for hh:mm:ss,SSS
(在日志中看到 secs 和 ms 之间的逗号作为分隔符)。结果是其他模块中有 3 logback.xml 个文件。他们没有日期格式。我在我的应用程序模块中创建了 logback.xml 并包含了日期格式。之后日期出现在控制台输出中。