LOG4J2: Mehrere Logger für mehrere Appender mit unterschiedlichen Protokollierungsstufen
Was ich versuche zu tun, ist ziemlich einfach:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name = "hibernateFile" fileName = "${artifactId}/logs/hibernate.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<File name = "springFile" fileName = "${artifactId}/logs/spring.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<File name = "rootFile" fileName = "${artifactId}/logs/root.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console"/>
<AppenderRef ref="rootFile"/>
</Root>
<Logger name ="org.springframework" level = "debug">
<AppenderRef ref = "Console" level = "info"/>
<AppenderRef ref = "springFile" level = "debug"/>
</Logger>
<Logger name ="org.hibernate" level = "debug">
<AppenderRef ref = "Console" level ="info"/>
<AppenderRef ref = "hibernateFile" level = "debug"/>
</Logger>
</Loggers>
</Configuration>
Ich möchte, dass nur wichtige Nachrichten auf meinem Konsolen-Appender angezeigt werden, während detaillierte Nachrichten an die Datei-Appender weitergeleitet werden.
Ich möchte den Appender jedoch nicht selbst filtern, da ich dort möglicherweise einige Debugging- oder Trace-Meldungen weiterleiten möchte (z. B. wenn ich mich in der Entwicklung befinde).
DasApache FAQ schlägt vor, dass ich nur filtern kann, indem ich denAppenderRef
, aber ich habe es versucht, wie in der obigen XML-Datei beschrieben - und es leitet die Meldungen auf DEBUG-Ebene weiterhin an die Konsole weiter.
Ich habe auch versucht, dem @ einen ThresholdFilter hinzuzufügAppenderRef
, aber das filtert es auch nicht.
<Logger name ="org.hibernate" level = "debug">
<AppenderRef ref = "Console">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</AppenderRef>
<AppenderRef ref = "hibernateFile" level = "debug"/>
</Logger>