gpt4 book ai didi

java - 如何将所有日志输出写入文件spring boot

转载 作者:行者123 更新时间:2023-12-04 03:11:19 31 4
gpt4 key购买 nike

我在 spring boot 项目中使用 logback-spring.xml。我想将所有未捕获的异常记录到一个文件中。基本上只是将控制台的输出定向到一个文件。我已经尝试了 logback-spring.xml 的几种变体。

我试过了

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="com.mine" level="WARN" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>

<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
</appender-ref>
</root>
</configuration>

在我的主要方法 SLF4JBridgeHandler.install();

我已经从 spring 文档中尝试过了

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>

这是在我的 application.yml 中

logging:
file: C:\dev\assessment-tool\logs\application.log
config: classpath:logback-spring.xml

对于这些,它将记录所有启动日志消息,但是当抛出异常但未捕获时,它会转到控制台并且不会显示在日志文件中。如何让未捕获的异常进入日志文件?

最佳答案

问题出在您在 logback-spring.xml 文件中分配给记录器的级别上。

根据 logback 架构文档,(您可以查看 here)“给定记录器 L 的有效级别等于其层次结构中的第一个非空级别,从 L 本身开始向上进行根记录器的层次结构”。

您在根记录器上分配级别“INFO”,在记录器“com.mine”上分配级别“WARN”。当出现异常时,它们都不会被“调用”,例如:logger.error(Exception e)。

一个解决方案是将级别“DEBUG”或“ERROR”分配给记录器“com.mine”或根记录器,因为它们附加了附加程序“FILE”。

关于java - 如何将所有日志输出写入文件spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069317/

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