在我的web项目中,我尝试使用SLF4j进行回溯,当我在本地机器上的Tomacat上启动应用程序时,我已经粘贴了SLF4j xml设置以及POM部分。我没有看到任何错误,也没有生成日志。
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyyddMM:HHmmss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>./myapp.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>14</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyyddMM:HHmmss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./myapp_debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>./myapp_debug.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>1</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyyddMM:HHmmss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- logger name="com.base22" level="TRACE"/ -->
<logger name="com.sample.app" level="TRACE" />
<logger name="org.apache" level="ERROR" />
<logger name="org.springframework" level="ERROR" />
<logger name="org.hibernate" level="ERROR" />
<logger name="java.sql" level="ERROR" />
<logger name="jdbc.audit" level="ERROR" />
<logger name="jdbc.connection" level="ERROR" />
<logger name="jdbc.sqltiming" level="ERROR" />
<logger name="jdbc.resultset" level="ERROR" />
<logger name="jdbc.resultsettable" level="ERROR" />
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="DEBUG" />
</root>
</configuration>
用于记录罐子的Maven Pom部分
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
答案 0 :(得分:2)
有一种有趣的方法可以解决这个问题。
首先,验证您没有冲突的绑定(即log4j被拉入)。由于您使用的是maven,请运行以下命令:
mvn dependency:tree -Dverbose -Dincludes=:log4j,:commons-logging
如果您看到传递中包含任何这些依赖项,请将依赖项添加到带来这些依赖项的依赖项中。
其次,将jul-to-slf4j
添加到您的依赖项列表(对应于您正在使用的版本)。您应该将任何和所有绑定放在slf4j-api之外作为runtime
范围。
第三,使用内容
添加文件src / main / resources / logging.propertieshandlers = org.slf4j.bridge.SLF4JBridgeHandler
如果您通过标准启动或catalina脚本启动tomcat,它将自动配置一个&#34;日志管理器&#34;这将允许您覆盖特定于上下文的java.util.logging(jul)配置。
有关详细信息,请参阅here。
答案 1 :(得分:0)
您好我修改了一些更改的问题,
的pom.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
在logback.xml中
将./myapp.log更改为$ {catalina.home} /logs/myapp.log
我可以看到现在在Tomcat / Logs目录中生成的日志
答案 2 :(得分:-1)
可能是您搜索的日志文件位置可能有误,请使用其名称搜索日志文件。