2015-06-23 97 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

我想只打印我在任一级别登录的语句。不希望在日志文件中打印任何其他语句。日志文件只能有一个日期或日期。 –