2017-04-01 163 views
0

我一直在研究這個很長一段時間,並沒有得到任何解決方案。我的要求是創建一個日誌文件,如果它不在那裏。 下面是我logback.xmlSLF4J + Logback創建文件如果不存在/如果刪除

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

<property name="LOG_PATH" value="/home/logs" /> 

<appender name="FILE-AUDIT" 
    class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOG_PATH}/debug.log</file> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %p\t%d{dd MMM yyyy HH:mm:ss,SSS}\t%r\t%c\t[--%t--]\t%m%n 
     </Pattern> 
    </encoder> 

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

</appender> 

<logger name="com.example" level="debug" 
    additivity="false"> 
    <appender-ref ref="FILE-AUDIT" /> 
</logger> 

<root level="debug"> 
    <appender-ref ref="FILE-AUDIT" /> 
</root> 

</configuration> 

我試圖改變配置,以配置調試=「真」,但沒有運氣。 執行此操作的正確方法是什麼?

請不要寫來檢查文件權限或要求我使用Log4j,我將我的應用程序更改爲使用slf4j而不是log4j。如果我還刪除該文件,它應該創建

回答

0

您應該使用ch.qos.logback.core.FileAppender文件追加。

<appender name="File-Appender" class="ch.qos.logback.core.FileAppender"> 
     <file>${LOG_PATH}/logfile-${timestamp-by-second}.log</file> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </encoder> 
</appender> 
0

既然你說你有Log4j的工作之前,確保你沒有從你的.pom在tryings排除「彈簧引導起動日誌」避免的Log4j之間的衝突和SLF4J。

我使用logback.xml相同的設置,一切都在POM做工精細

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <Pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n</Pattern> 
     </encoder> 
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
      <level>TRACE</level> 
     </filter> 
    </appender> 

    <appender name="testServiceFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <FileNamePattern>logs/test_service_%d{yyyy-MM-dd}.log</FileNamePattern> 
     </rollingPolicy> 
     <encoder> 
      <Pattern>%-5level %logger{35} - %msg %n</Pattern> 
     </encoder> 
    </appender> 

    <logger name="com.mycompany.test" additivity="false"> 
     <level value="INFO"/> 
     <appender-ref ref="testServiceFileAppender"/> 
    </logger> 

    <root> 
     <level value="INFO"/> 
     <appender-ref ref="consoleAppender"/> 
    </root> 
</configuration> 

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
</dependencies>