2016-08-23 32 views
5

"@ Slf4j" ek açıklamaları olan bir Spring boot projemde, belirli sınıflar için farklı bir dosyada oturum açmak istiyorum. Ama bunu nasıl yapacağını anlayamadım.Yay önyükleme birden çok günlük dosyası

logging.config= path/to/logback-spring.xml 
logging.file=myCurrentLogFile.log 

Şimdi başka logback-spring.xml dosyası oluşturmak zorunda mıyım: Böyle dosya benim özelliklerinden başvuruda bulunulan bir logback-spring.xml dosyası var? veya mevcut dosyada yapılandırabilirim ve eğer o zaman hangi logger'ı kullanacağımı nasıl seçebilirim.

cevap

3

Sadece başka bir günlükçüyü ve ekleyiciyi ekleyin. Bu audit-log logger almak ve FILE-AUDIT kullanacak

private static Logger audit = LoggerFactory.getLogger("audit-log"); 

: Örneğin ben ile logger erişebilirsiniz kodunda aşağıdaki logback.xml

<property name="LOGS_HOME" value="/var/applications/myProject/applogs/" /> 

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </layout> 
</appender> 

<appender name="FILE" 
    class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOGS_HOME}myProject_log.log</file> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </encoder> 

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

<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${LOGS_HOME}myProject_audit.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>${LOGS_HOME}myProject_audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>100MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
</appender> 

<logger name="com.myCompany.myProject" level="info" additivity="false"> 
    <appender-ref ref="FILE" /> 
    <appender-ref ref="STDOUT" /> 
</logger> 

<logger name="audit-log" level="info" additivity="false"> 
    <appender-ref ref="FILE-AUDIT" /> 
    <appender-ref ref="STDOUT" /> 
</logger> 

<root level="error"> 
    <appender-ref ref="FILE" /> 
    <appender-ref ref="STDOUT" /> 
</root> 

kullanılan appender.

"Standart" appender belirtilen pakette herhangi sınıfı ile kullanılır: Bu <logger name="com.myCompany.myProject" level="info" additivity="false"> ve obviosly DOSYA appender kullanacak

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

.

+0

teşekkürler, ancak kodunuzu denedim ancak herhangi bir yerde oluşturulmuş yeni bir denetim günlüğü dosyasını göremiyorum. Belki de böyle bir şeyi özelliklerde tanımlamalıyım? logging.config = yol – Spring

+0

@Spring '' dosyasına bakın. Dosya,/var/applications/myProject/applogs içinde olmalıdır/myProject_audit.log' veya "LOGS_HOME" değerini ayarladığınız yol. Ayrıca, uygulamanın dizinde yazma hakları olup olmadığını da kontrol edin. –

+0

thx ama yine de çalışmıyor, diğer varsayılan günlük dosyam ile aynı (ls -la) görünümlerini kontrol ettim – Spring

İlgili konular