我有一个使用log4j的外部库,起初登录控制台很有用,但现在它试图在控制台上打印KB xml消息,而它只是不再可用了。
我尝试了在这个网站上发布的一些程序化解决方案,但无济于事,我从未使用过log4j,我发现我需要学习它才能禁用它,因为它是由库强加的。
我试过
LoggerContext ctx = (LoggerContext) LogManager.getContext();
Configuration config = ctx.getConfiguration();
Collection<LoggerConfig> loggers = config.getLoggers().values();
for(LoggerConfig cfg: loggers) {
cfg.setLevel(Level.OFF);
}
和
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
但是他们不会吵架
如何禁用log4j?
答案 0 :(得分:0)
很长一段时间后,我意识到另一个图书馆也使用了SLF4J,最终记录了我的消息。
最后,以下内容可被视为补救措施,或至少是针对大多数不需要的日志的临时解决方案
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
for log4j(小心导入org.apache.logging.log4j.LogManager而不是java.util.logging.LogManager)
ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
rootLogger.setLevel(Level.toLevel("off"));
for SLF4J
为什么第一个
LoggerContext ctx = (LoggerContext) LogManager.getContext();
Configuration config = ctx.getConfiguration();
Collection<LoggerConfig> loggers = config.getLoggers().values();
for(LoggerConfig cfg: loggers) {
cfg.setLevel(Level.OFF);
}
无法编译我最终没想到