2017-06-12 39 views
0

我在我的項目中使用logback並且它不登錄到文件。Logback不會登錄到文件

我logback.xml看起來像這樣

<property file="api.properties"/> 

<appender name="FILE-AUDIT" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>c:/debug.log</file> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} - %msg%n 
     </Pattern> 
    </encoder> 

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <fileNamePattern>c:/archived/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>10MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 

</appender> 

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern> 
    </encoder> 
</appender> 

<logger name="JDBC" level="INFO" additivity="false"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE-AUDIT" /> 
</logger> 
<logger name="RESTSecurity" level="INFO" additivity="false"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE-AUDIT" /> 
</logger> 
<logger name="models" level="INFO" additivity="false"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE-AUDIT" /> 
</logger> 

<!-- Strictly speaking, the level attribute is not necessary since --> 
<!-- the level of the root level is set to DEBUG by default.  --> 
<root level="DEBUG"> 
    <appender-ref ref="STDOUT" /> 
</root> 

並且將其放置在WEB-INF/classes中。

我用這些依賴

<dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>${logback.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-core</artifactId> 
      <version>${logback.version}</version> 
     </dependency> 

當我跑我的WebLogic服務器上的應用程序,我在控制檯中我的日誌消息,但不會創建日誌文件。 任何人都知道什麼可能是錯的?

編輯: 我試圖同時使用

private static final Logger logger = LoggerFactory.getLogger("JDBC"); 

private static final Logger logger = LoggerFactory.getLogger(Roles.class); 

作爲類是在JDBC包。 然後,我只是做

logger.info("Initializing roles"); 

EDIT2: 因爲日誌消息我在控制檯中看到顯示的內容與在logback.xml它看起來像它不會忽略我logback.xml都不同。

+0

請出示你的代碼,你在的logback配置中使用不同的記錄器。 – Rouliboy

+0

@Rouliboy我已將其添加到編輯中 –

+0

嘗試刪除' c:/archived/debug.%d {yyyy-MM-dd}。%i.log'和'之間的換行符和空格「 。你確定應用程序有權限創建相應的文件並且'c:/ archived'目錄已經存在嗎? – yeputons

回答

0

問題必須來自Weblogic的不拿起SLF4J /你的類路徑中的Logback。

添加以下prefer-application-packagesweblogic.xml

<prefer-application-packages> 
    <package-name>org.slf4j.*</package-name> 
    <package-name>ch.qos.logback.*</package-name> 
</prefer-application-packages> 
+0

這解決了它!謝謝! –

0

你必須將所有附加目的地添加到日誌級別,如果你想DEBUG記錄到文件中,添加裁判是這樣的:

<root level="DEBUG"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE-AUDIT" /> 
</root> 
+0

不起作用。但正如上面評論中提到的,它看起來像我的應用程序完全忽略了logback.xml,所以也許它在xml文件中不是錯誤。我已更新帖子提及它。 –