How to avoid multiple log files in slf4j logging?

2019-08-11 17:13发布

I am implementing SLF4J logging with logback.xml but application is creating multiple log files. I need to create one single log file for a date with all the log levels in same log files.

Below is my logback.xml configuration.

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

1条回答
放荡不羁爱自由
2楼-- · 2019-08-11 17:27

Just simplify it to this:

<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>
查看更多
登录 后发表回答