碰到一个 spring初始化日志打印两次的情况。。查看类的实例又是一样的。
查看原因是是log的日志没配置对 输出了两次的日志。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Properties>
<Property name="filePath">../logs/log.log</Property>
</Properties>
<Appenders>
<!--这个输出控制台的配置 -->
<Console name="console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %c {%F:%L} - %m%n"/>
</Console>
<File name="logFile" fileName="${filePath}">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %c {%F:%L} - %m%n"/>
</File>
</Appenders>
<Loggers>
<logger name="com.test" level="DEBUG">
<AppenderRef ref="console"/>
<AppenderRef ref="logFile"/>
</logger>
<Root level="info">
<AppenderRef ref="console"/>
<AppenderRef ref="logFile"/>
</Root>
</Loggers>
</Configuration>
原因是Root 和com.test都实现了两个appender 导致日志输出两次
应在com.test的接口上增加additivity=”false”
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<Properties>
<Property name="filePath">../logs/log.log</Property>
</Properties>
<Appenders>
<!--这个输出控制台的配置 -->
<Console name="console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %c {%F:%L} - %m%n"/>
</Console>
<File name="logFile" fileName="${filePath}">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %c {%F:%L} - %m%n"/>
</File>
</Appenders>
<Loggers>
<logger name="com.test" level="DEBUG" additivity="false">
<AppenderRef ref="console"/>
<AppenderRef ref="logFile"/>
</logger>
<Root level="info">
<AppenderRef ref="console"/>
<AppenderRef ref="logFile"/>
</Root>
</Loggers>
</Configuration>
这样就完美了。