gpt4 book ai didi

java - 无法使用 SLF4J 禁用 quartz 调度程序日志记录

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:35 26 4
gpt4 key购买 nike

将 quartz-scheduler 添加到项目后,Tomcat 的服务器日志被垃圾邮件发送为以下消息:

[INFO] [talledLocalContainer] 12:15:06.319 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers

我正在尝试禁用该日志消息,它每 25 秒左右重复一次。我已经对同一个问题进行了许多其他回答,例如:

...并且所建议的方法均无效。

我在 pom.xml 中声明了以下依赖项:

    <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>

并且我已将以下 log4j.properties 设置添加到我的项目中:

log4j.rootLogger=OFF
log4j.logger.quartz=OFF
log4j.logger.o.quartz=OFF
log4j.logger.org.quartz=OFF

...还有以下 simplelogger.properties:

org.slf4j.simpleLogger.defaultLogLevel=error

除了尝试在其中一个链接的答案中建议的编程解决方案外,它应该禁用所有日志记录并且大致如下:

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}

这似乎禁用了运行时来自 quartz 的日志消息 之外的所有内容。

有没有办法从 quartz 中删除日志消息,而不是修改 quartz 源代码来删除它?

最佳答案

上面的日志条目看起来不像 Log4J。我认为那是 ACL 或 JUL。当你使用Slf4j转Log4J时,你还需要redirect these frameworks to Slf4j .将这些依赖项也添加到您的项目中:

<!--Redirect Apache Commons Logging to Slf4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.5</version>
</dependency>
<!--Redirect Java Util Logging to Slf4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.5</version>
</dependency>

阅读this doc page关于也将 Jul 重定向到 Slf4J。请务必通过 Maven 从您的项目中排除任何现有的 commons-logging.jar 文件。

enter image description here

(来自Slf4J documentation page)

如果一切都失败了,试试下面的代码:

//see if we can find the offending logger through slf4j's LoggerFactory
org.slf4j.Logger logger =
LoggerFactory.getLogger(Class.forName("org.quartz.core.QuartzSchedulerThread"));
if (logger != null && logger instanceof ch.qos.logback.classic.Logger) {
//the slf4j Logger interface doesn't expose any configuration API's, but
//we can cast to a class that does; so cast it and disable the logger
((ch.qos.logback.classic.Logger)logger).setLevel(
ch.qos.logback.classic.Level.OFF);
}

关于java - 无法使用 SLF4J 禁用 quartz 调度程序日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26964672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com