gpt4 book ai didi

Spring - 异常不记录到文件

转载 作者:行者123 更新时间:2023-12-05 07:49:19 24 4
gpt4 key购买 nike

我目前正在使用 SLF4J API 进行日志记录。

每当在运行时抛出异常时,完整的错误堆栈跟踪不会记录到文件中,它只会打印到控制台。我正在使用 eclipse 。

这是我的 logback.xml 代码 (目前位于 WEB-INF 下的 classes 文件夹中)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>

<configuration>
<!-- Specify here the path of the folder you want to save your logs -->
<property name="LOGFILE_PATH" value="C:/Logs" />

<!-- All logging will be redirected/ printed to console. -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd hh:mm:ss a} [%thread] %-5level %logger{50} - %rEx %msg%n </Pattern>
</layout>
</appender>

<!-- Send log to file -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOGFILE_PATH}/spring-mybatis-log.log</File>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd hh:mm:ss a} [%thread] %-5level %logger - %rEx %msg%n</pattern>
</layout>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOGFILE_PATH}/spring-mybatis-log-%d{yyyy-MM-dd}-%i.txt
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>

</configuration>
  1. 上面的文件有什么遗漏/错误吗??

  2. 是否可以记录(到文件)所有将打印到控制台的文本?

  3. spring(或者项目本身)是如何读取logback.xml文件的?如果我重命名它并将其放在另一个文件夹中怎么办?

  4. 如何创建一个包含所有级别(INFO、DEBUG、ERROR、WARN 等)的root

最佳答案

回答您的问题:

  1. 虽然我没有尝试实际运行它,但在我看来,您发布的文件没有任何明显错误。
  2. 按照您的做法很好,有两个附加程序,一个用于文件,另一个用于控制台。
  3. 默认情况下,Logback 在类路径中查找 logback.xml 文件。引用configuration page of the manual了解详情。它到达那里的方式取决于您的构建系统。使用 Maven 时,我建议将它放在 src/main/resources 中。 .但如果它以 WEB-INF/classes 结尾当部署在您的网络应用程序中时,它应该可以工作。如果无论您在 logback.xml 文件中放入什么,您只会得到控制台输出(尝试添加语法错误或重命名要测试的文件),这就是我首先要查看的内容,以确保 Logback 正在获取文件正确的。如果它找不到文件,它将默认只在控制台上显示所有内容,尽管我认为它在开始时会显示一个警告,表明它正在这样做。如果它正在提取文件,您可以尝试输入 debug="true" <configuration>元素,看看它是否发现错误导致它无法按照您期望的方式使用 appender。
  4. 像您所做的那样,指定日志记录的“DEBUG”级别也将获得所有更高级别。

如果问题是来自 Spring 的日志记录没有到达您想要的位置,而您的应用程序的日志记录工作正常,您可能需要重定向 Spring(它使用 Apache Commons Logging)以使用 SLF4J反而。为此,删除 commons-logging 依赖项并添加 jcl-over-slf4j 库。这将模拟 commons-logging 调用并让它们指向 SLF4J。请参阅 this blog post 的“使用 SLF4J”部分了解更多详情。

关于Spring - 异常不记录到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431945/

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