2017-04-01 9 views
0

저는 오랫동안이를 연구 해왔고 전혀 해결책을 얻지 못했습니다. 내 요구 사항은 로그 파일이 장소에 없으면 작성하는 것입니다. 다음은 내 logback.xmlSLF4J + 파일을 만들기위한 로그백 (존재하지 않는 경우)/삭제 된 경우

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

내가 구성 "true"로 디버그 =하지만 행운에 구성을 변경 시도했다. 이것을 구현하는 올바른 방법은 무엇입니까?

파일 사용 권한을 확인하거나 Log4j를 사용하도록 요청하지 마십시오. log4j 대신 slf4j를 사용하도록 응용 프로그램을 변경했습니다. 파일을 삭제해도 작성해야합니다.

답변

0

파일 추가시에는 ch.qos.logback.core.FileAppender을 사용해야합니다. 당신은 당신이 이전에 당신의 log4j 간의 충돌을 방지하기 위해 tryings에 .pom에서 "스프링 부팅 스타터 로깅"을 배제하지 않았다 확인의 log4j와 함께 일했다 했으므로

<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

및 slf4j.

나는 logback.xml에서 동일한 설정을 사용하고 있는데 모든 치어에서 잘

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