在 Java 里“Logger 重复”通常指日志被打印多次(重复输出),而不是 Logger 对象本身重复。常见原因和解决办法如下:
例如同时引入了:
log4jlogbackjava.util.loggingslf4j + 多个实现✅ 解决:
Maven 示例(只保留 logback):
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
排除冲突包:
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
Logger logger = Logger.getLogger("test");
logger.addAppender(new ConsoleAppender());
logger.addAppender(new ConsoleAppender());
✅ 解决:
root -> ConsoleAppender
com.example -> ConsoleAppender
com.example.Service 的日志会:
✅ 解决(Logback):
<logger name="com.example" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
✅ Log4j:
<logger name="com.example" additivity="false">
<appender-ref ref="Console"/>
</logger>
spring-boot-starter-log4j2logback✅ 解决:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Logger logger = LoggerFactory.getLogger(X.class);
✅ 这是安全的,Logger 是单例缓存的,不会重复。
additivity=false-Dlogback.debug=true
如果你能贴出:
我可以直接帮你定位是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。