I'm try to config Logback. I'm using Spring Boot 3.0. And I want:
- All logs must be printed to console
- Only error logs should be printed to file
- 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