我想要做的很简单:
<?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>
Run Code Online (Sandbox Code Playgroud)
我只希望在控制台 appender 上显示重要消息,而我希望将详细消息路由到文件 appender。
但是,我不想过滤 appender 本身——因为我可能想在那里路由一些调试或跟踪消息(例如,当我在开发中时)。
在Apache的常见问题表明,我可以通过在日志记录级别过滤器AppenderRef,但我想这一点,如上面的XML概述-它仍然路线DEBUG级别的消息到控制台。
我还尝试向 中添加 ThresholdFilter AppenderRef,但这也不会对其进行过滤。
<Logger name ="org.hibernate" level = "debug">
<AppenderRef ref = "Console">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</AppenderRef>
<AppenderRef ref = "hibernateFile" level = "debug"/>
</Logger>
Run Code Online (Sandbox Code Playgroud)
additivity="false" 应该做的伎俩:
<Logger name="org.hibernate" level="debug" additivity="false">
Run Code Online (Sandbox Code Playgroud)
该additivity控制是否日志事件也仍然转发到根记录与否。