2015-10-06 141 views
0

在我的web項目中,我嘗試使用帶有logback的SLF4j,當我在本地機器上的Tomacat上啓動應用程序時,我粘貼了SLF4j xml設置以及POM部分。我沒有看到任何錯誤,也沒有生成日誌。用於記錄罐子Maven POM文件的SLF4j不寫入日誌文件

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> 

<!-- 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

裏面一個Web容器使用Java util記錄作爲後端,所以容器將收集它。 –

回答

-1

可能是你尋找可能是錯誤日誌文件的位置,請搜索與它的名稱日誌文件。

2

有一個有趣的方法來處理這個問題。

首先,確認你沒有衝突的綁定(即log4j被拉入)。既然你使用maven,運行以下命令:

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

如果你看到任何這些相關的包括及物,添加排除到正在把那些依賴

其次,加jul-to-slf4j到你的依賴列表(對應於您使用的版本)。您應該將slf4j-api之外的任何和所有綁定作爲runtime範圍。

第三,內容添加文件src /主/資源/ logging.properties

handlers = org.slf4j.bridge.SLF4JBridgeHandler 

如果您通過標準的啓動或卡塔利娜腳本啓動tomcat的它會自動配置一個「日誌管理器」是將允許您重寫特定於上下文的java.util.logging(jul)配置。

查看here瞭解更多信息。

+1

+1確保公共日誌記錄不在您的類路徑中。根據我的經驗,slf4j和commons-logging不能很好地協同工作,其中一個症狀正是OP描述的 - 沒有錯誤,日誌文件中沒有數據。 – user944849

0

您好我固定

<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 /做出一些改動的問題,

的pom.xml日誌/ myapp.log

,我可以看到現在生成的日誌中的Tomcat/logs目錄