2017-04-01 167 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>