1

I'm try to config Logback. I'm using Spring Boot 3.0. And I want:

  1. All logs must be printed to console
  2. Only error logs should be printed to file
  3. If application does not print any error-logs then file must be no create

My configuration:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <springProperty scope="context" name="app" source="spring.application.name"/>
    <springProfile name="development,default">
        <import class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"/>
        <import class="ch.qos.logback.core.FileAppender"/>
        <timestamp key="byStartDate" datePattern="yyyyMMddHHmmss"/>

        <appender name="FILE" class="FileAppender">
            <file>${LOG_PATH}/error_${byStartDate}.log</file>
            <encoder class="PatternLayoutEncoder">
                <pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>

        <import class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"/>
        <import class="ch.qos.logback.core.ConsoleAppender"/>

        <appender name="STDOUT" class="ConsoleAppender">
            <encoder class="PatternLayoutEncoder">
                <pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <logger name="org.jooq" level="warn" additivity="false">
            <appender-ref ref="STDOUT"/>
        </logger>
        <root level="INFO">
            <appender-ref ref="FILE"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
</configuration>

But after every app executing i founding empty error log file in log path. How to fix it?

UPD: Solution is: https://stackoverflow.com/a/37157829/16644196

0 Answers0