0

Can someone help me to create a logback-spring.xml file for this scenario:

startup log and application log should be logged to 2 separate files, which are updated continiously. How would the file appenders look in logback-spring.xml?

Alien
  • 15,141
  • 6
  • 37
  • 57
Mattias S. Nordell
  • 53
  • 1
  • 1
  • 10

2 Answers2

1

I managed to achieve with this approach:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="APP_FILE" class="ch.qos.logback.core.FileAppender">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
            <expression>return logger.equals("<YOUR FULL CLASS NAME FOR APPLICATION CLASS>");</expression>
        </evaluator>
        <OnMismatch>ACCEPT</OnMismatch>
        <OnMatch>DENY</OnMatch>
    </filter>

    <file>app.log</file>
    <append>true</append>
    <!-- set immediateFlush to false for much higher logging throughput -->
    <immediateFlush>true</immediateFlush>
    <encoder>
        <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n</pattern>
    </encoder>
</appender>

<appender name="STARTUP_FILE" class="ch.qos.logback.core.FileAppender">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
            <expression>return logger.equals("<YOUR FULL CLASS NAME FOR APPLICATION CLASS>");</expression>
        </evaluator>
        <OnMismatch>DENY</OnMismatch>
        <OnMatch>ACCEPT</OnMatch>
    </filter>
    <file>startup.log</file>
    <append>true</append>
    <!-- set immediateFlush to false for much higher logging throughput -->
    <immediateFlush>true</immediateFlush>
    <encoder>
        <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n</pattern>
    </encoder>
</appender>

<logger name="<YOUR PACKAGE HERE>" level="debug">
    <appender-ref ref="APP_FILE" />
</logger>

<root level="info">
    <appender-ref ref="STARTUP_FILE" />
</root>

Just replacing the :

<YOUR FULL CLASS NAME FOR APPLICATION CLASS>
<YOUR PACKAGE HERE>

Example:

com.bhrother.exampleapp.Application.class
com.bhrother.exampleapp

Here, we are filtering the logs by loggerName to know where each log should go.

Brother
  • 2,150
  • 1
  • 20
  • 24
0
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <appender name="ROLLING-FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>
              some pattern
            </pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--daily rollover -->
            <fileNamePattern>some pattern</fileNamePattern>
        </rollingPolicy>
    </appender>
    <appender name="STARTUP"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>
                ${CONSOLE_LOG_PATTERN}
            </pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>some pattern</fileNamePattern>
        </rollingPolicy>
    </appender>
    <logger name="SOME PACKAGE" level="INFO" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ROLLING-FILE"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="STARTUP"/>
    </root>
</configuration>
Mattias S. Nordell
  • 53
  • 1
  • 1
  • 10