gpt4 book ai didi

java - 如何配置 log4j 和 logback 以正确登录到一个文件?

转载 作者:行者123 更新时间:2023-11-30 08:39:40 24 4
gpt4 key购买 nike

我有一个 java 网络应用程序,它使用带有 slf4j 的 logback 进行日志记录。这个项目有一个依赖jar(这是一个子项目)。这个依赖 jar 使用 org.apache.log4j.Logger 进行日志记录。所有日志必须进入一个日志文件。我的问题是,无论我用 jar 文件中的代码记录什么,都不会写入日志文件。最初我有 logback.xml。为了解决上述问题,我将 log4j.properties 文件添加到我的网络应用程序中。它解决了我的问题,现在我可以在一个文件中查看所有日志。

我的新问题是:早些时候日志文件根据 logback.xml 中的滚动策略每天滚动。现在它不滚动了。即使我在 log4j.properties 中配置了与 logback.xml 中的滚动策略相匹配的滚动策略,滚动也没有发生。

我不想用 logback 替换依赖项中的 log4j。而且我还想将所有日志写入一个文件。这可能吗,我该如何解决我的问题?

仅供引用:我的 pom.xml 中包含“log4j-over-slf4j”依赖项

Log4j.properties:

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=SOME_PATH/logs/studentApp.log
log4j.appender.file.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.rollingPolicy.FileNamePattern = SOME_PATH/logs/studentApp.%d{yyyy-MM-dd}.log
log4j.appender.file.maxBackupIndex=14
log4j.appender.file.threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%-5p] %d %c - %m%n
log4j.rootLogger=DEBUG,file

最佳答案

假设您的滚动策略是正确的,log4j 可能会选择错误的配置。 log4j 查找类路径中的第一个配置文件(第一个 .xml 然后是 .properties),如果它恰好是来自您的一个依赖项的配置,您的滚动策略将不会工作。

要对此进行测试,您可以将系统属性 -Dlog4j.configuration=... 添加到 tomcat 启动脚本的配置路径。或者简单地将您的日志级别设置为 TRACE/DEBUG 并查看它是否影响输出。

编辑:您的 log4j 配置看起来不错,但缺少日期模式。尝试添加log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm(请注意,我已将模式设置为每分钟滚动一次,以便于测试)

编辑:您可以删除包含 rollingPolicymaxBackupIndex 的每一行 - 在这种情况下不会选取这些内容

关于java - 如何配置 log4j 和 logback 以正确登录到一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com