繁体   English   中英

SLF4j未写入日志文件

[英]SLF4j not writing to a log file

在我的Web项目中,尝试在本地计算机上的Tomacat上启动应用程序时,我尝试将SLF4j与logback一起使用,粘贴了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>

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

首先,请验证您没有冲突的绑定(即,将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,它将自动配置“日志管理器”,该日志管理器将允许您覆盖特定于上下文的java.util.logging(jul)配置。

有关更多信息,请参见此处

嗨,我解决了几个问题,

POM文件

<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目录中看到现在生成的日志

可能是您搜索的日志文件位置可能不正确,请使用名称搜索日志文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM