我目前正在使用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>
上述文件是否遗漏/错误?
是否可以记录(到文件)将要打印到控制台的所有文本?
spring(或项目本身)如何读取logback.xml文件?如果我将其重命名并将其放在另一个文件夹中该怎么办?
如何创建一个根,其中包含所有级别(INFO,DEBUG,ERROR,WARN等)?
答案 0 :(得分:1)
回答你的问题:
src/main/resources
中。但如果它在您的网络应用中部署时WEB-INF/classes
结束,那应该可行。如果不管你在logback.xml文件中放了什么,你只得到控制台输出(尝试添加语法错误或重命名文件进行测试),这就是我首先要看的,以确保Logback正在拾取文件对。如果它找不到文件,它将默认显示在控制台上的所有内容,但我认为它在开头显示它正在这样做的警告。如果它正在拾取文件,您可以尝试将debug="true"
放在<configuration>
元素中,以查看是否存在错误导致其未按照您期望的方式使用appender 如果问题是从Spring的日志记录没有到达你想要的地方,而你的应用程序的日志记录工作正常,你可能需要重定向Spring(使用Apache Commons Logging)来使用SLF4J代替。为此,请删除commons-logging依赖项并添加jcl-over-slf4j库。这将模拟commons-logging调用,并让它们指向SLF4J。有关详细信息,请参阅this blog post的“使用SLF4J”部分。
答案 1 :(得分:0)
您的配置看起来没问题,但您可以尝试使用根级别 INFO 而不是 DEBUG ,如果您有像spring,hibernate等框架,则可以使用其他级别对他们来说像是:
<logger name="org.hibernate" level="OFF" />
<logger name="org.springframework" level="INFO" />
<logger name="org.springframework.web.servlet.mvc" level="INFO" />