2016-08-23 89 views
5

在我的帶有「@ Slf4j」註釋類的Spring引導項目中,對於某些類我想登錄到不同的文件。但無法弄清楚如何做到這一點。我有一個的logback-spring.xml文件,該文件是從我的屬性引用的文件是這樣的:Spring引導多個日誌文件

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

我必須現在創建另一個的logback-spring.xml文件?或者我可以在當前文件中配置它,如果那麼我該如何選擇使用哪種記錄器。

回答

3

只需添加另一個記錄器和appender。 例如我用下面的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> 

在代碼中,你可以訪問記錄:

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

這將得到audit-log記錄儀和使用FILE-AUDIT附加目的地。

的「非標準」附加器一起使用的任何類,它是在指定的包:

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

這將使用<logger name="com.myCompany.myProject" level="info" additivity="false">和obviosly的FILE附加器。

+0

謝謝,但我試過你的代碼,但不能看到任何地方創建一個新的審計日誌文件。也許我需要在屬性中定義這樣的東西? logging.config = path – Spring

+0

@Spring查看''該文件應該放在'/ var/applications/myProject/applogs/myProject_audit.log'或任何你設置'LOGS_HOME'的路徑。同時檢查應用程序是否有權在目錄中寫入。 –

+0

thx但仍然沒有工作,我檢查了權利(ls -la)它的外觀與我的其他默認日誌文件相同 – Spring