2015-06-23 118 views
1

我正在使用logback.xml實現SLF4J日誌記錄,但應用程序正在創建多個日誌文件。 我需要在同一個日誌文件中爲所有日誌級別創建一個日期文件。如何避免slf4j日誌中的多個日誌文件?

以下是我的logback.xml配置。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <property name="LOG_FILE_LOCATION" value="./log/" /> 

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

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

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>${LOG_FILE_LOCATION}/manageng_%d{yyyy-MM-dd_HH-mm-ss}.log</fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
       <maxFileSize>10MB</maxFileSize> 
      </timeBasedFileNamingAndTriggeringPolicy> 
     </rollingPolicy> 
    </appender> 


    <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
      <Pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%-5level] [%logger] - %msg%n</Pattern> 
     </encoder> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>${LOG_FILE_LOCATION}/manageng_error_%d{yyyy-MM-dd_HH-mm-ss}.log</fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
       <maxFileSize>10MB</maxFileSize> 
      </timeBasedFileNamingAndTriggeringPolicy> 
     </rollingPolicy> 
    </appender> 


    <logger name="net.indecomm.manageng" level="debug" additivity="false"> 
     <appender-ref ref="FILE"/> 
     <appender-ref ref="CONSOLE"/> 
    </logger> 

    <root level="ERROR"> 
     <appender-ref ref="FILE-ERROR"/> 
     <appender-ref ref="CONSOLE"/> 
    </root> 


</configuration> 

回答

0

只要將其簡化爲這樣:

<configuration> 
    <property name="LOG_FILE_LOCATION" value="./log/" /> 

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

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>${LOG_FILE_LOCATION}/manageng_%d{yyyy-MM-dd_HH-mm-ss}.log</fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
       <maxFileSize>10MB</maxFileSize> 
      </timeBasedFileNamingAndTriggeringPolicy> 
     </rollingPolicy> 
    </appender> 

    <logger name="net.indecomm.manageng" level="debug" additivity="false"> 
     <appender-ref ref="FILE"/> 
    </logger> 

    <root level="DEBUG"> 
     <appender-ref ref="FILE"/> 
    </root> 

</configuration> 
+0

感謝快速回復。但是現在更多數量的日誌文件是使用我沒有記錄的所有必要數據創建的。 –

+0

記錄器名稱是根據包名稱過濾出日誌。 –

+0

我想只打印我在任一級別登錄的語句。不希望在日誌文件中打印任何其他語句。日誌文件只能有一個日期或日期。 –