【问题标题】:Spring boot with gradle and log4j2 not logs to file使用 gradle 和 log4j2 的 Spring Boot 不记录到文件
【发布时间】:2015-07-23 08:39:55
【问题描述】:

我已经开始使用 spring boot 和 gradle 并且我正在尝试使用 log4j2 进行日志记录。 我首先编译和构建:

gradlew clean build

然后执行jar:

java -jar build/libs/java-apns-notifier-0.1.0.jar

执行 jar 后,我可以在控制台中看到日志,但在 log4j2.xml(D:/temp/logs/apns.log) 中提到的文件中看不到。在该文件中,我只能看到来自 springframework 的日志,但看不到来自我的代码的日志。
问题是如何让这个简单的场景发挥作用?
我想看看我的日志也出现在日志文件中。

这里是源代码:Java Apple Push Notification Service Notifier

重要!
我最近注意到出现了日志。但只有在我终止进程之后。 所以在这里澄清一下是怎么回事:

  1. 运行 jar:

java -jar build/libs/java-apns-notifier-0.1.0.jar

-> 日志文件中没有出现任何内容

  1. 在命令行中终止进程。
    -> 日志出现在日志文件中

【问题讨论】:

  • 您是否检查过您的 log4j 配置是否已正确添加到 JAR 中?例如,您是否已解压缩 JAR 并确保所有内容都在应有的位置?
  • 是的。 i.imgur.com/fHv4PpH.png i.imgur.com/24ECSY0.png Config 是关于 log4j2 写入日志文件 D:/temp/logs/apns.log 的事实问题是只有 springframework 日志被写入,而我的应用程序没有。
  • 您的配置在未打包在 JAR 中时是否正常工作?比如你在 IDE 中启动应用程序的时候?
  • 从 ide 启动时相同。我的代码中的日志文件中没有条目。
  • 很可能,log4j2 没有找到您的配置文件,因为它位于资源包中,而不是在类路径的根目录中。尝试传入 jvm 参数 '-Dlog4j.configurationFile="path to file" ' 如果可行,您只需要设置属性或移动配置文件。

标签: gradle spring-boot log4j2


【解决方案1】:

日志需要一些时间才能出现在您的日志文件中,因为您正在使用

immediateFlush="false"

如果您将其切换为 true,您将看到日志立即出现,但这可能会影响应用程序的性能。

默认情况下,bufferedIOtruebufferSize8192 字节。这意味着只有在缓冲区有 8192 个字符后才会将日志写入磁盘。

详情请参阅https://logging.apache.org/log4j/2.x/manual/appenders.html

【讨论】:

    猜你喜欢
    • 2019-08-31
    • 2021-02-28
    • 2017-01-26
    • 2021-06-22
    • 2017-12-20
    • 2014-10-30
    • 2021-11-19
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多