Unten ist meine logback.xml Ich habe Filterklasse hinzugefügt, um verschiedene Protokollstufen einzustellen, aber es scheint nicht zu funktionieren.Wie erstelle ich mit logback.xml 2 verschiedene Loglevel für stdout und file?
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
**<filter class ="ch.qos.logback.classic.filter.ThresholdFilter"><level>WARN</level></filter>**
<encoder>
<charset>UTF-8</charset>
<Pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
**<filter class ="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter>**
<file>application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover. Make sure the path matches the one in the file element or else
the rollover logs are placed in the working directory. -->
<fileNamePattern>/srv/logs/application_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
Und das ist mein Java-Code, wo ich Logback-Konfiguration verwenden.
public class APIController {
private static final Logger logger = LoggerFactory.getLogger(APIController.class);
...
private void handleException(Exception ex, String message) {
logger.warn(message);
if(logger.isInfoEnabled()){
ex.printstacktrace();
}
}
}
Aber immer noch sehe ich Stacktrace auf der Konsole. Wie sollte ich 2 verschiedene Log-Ebenen behalten