SLF4j没有写入日志文件

时间:2015-10-06 16:09:46

标签: java maven slf4j logback

在我的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>

3 个答案:

答案 0 :(得分:2)

有一种有趣的方法可以解决这个问题。

首先,验证您没有冲突的绑定(即log4j被拉入)。由于您使用的是maven,请运行以下命令:

mvn dependency:tree -Dverbose -Dincludes=:log4j,:commons-logging

如果您看到传递中包含任何这些依赖项,请将依赖项添加到带来这些依赖项的依赖项中。

其次,将jul-to-slf4j添加到您的依赖项列表(对应于您正在使用的版本)。您应该将任何和所有绑定放在slf4j-api之外作为runtime范围。

第三,使用内容

添加文件src / main / resources / logging.properties
handlers = 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)

可能是您搜索的日志文件位置可能有误,请使用其名称搜索日志文件。