<configuration scan="true" scanPeriod="30 seconds"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- because logback is to stupid to add a proper filter for that --> <filter class="net.romvoid.crashbot.logging.InverseThresholdFilter"> <level>WARN</level> </filter> <encoder> <pattern>[%d{HH:mm:ss}] [%level] [%logger{0}]: %msg%n</pattern> </encoder> </appender> <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender"> <target>System.err</target> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>WARN</level> </filter> <encoder> <pattern>[%d{HH:mm:ss}] [%level] [%logger{0}]: %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/current.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>logs/%d{yyyy-MM-dd}.log</fileNamePattern> <!-- keep 30 days' worth of history capped at 3GB total size --> <maxHistory>30</maxHistory> <totalSizeCap>3GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>[%d{HH:mm:ss}] [%level] [%logger{0}]: %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="STDERR"/> <appender-ref ref="FILE"/> </root> </configuration>