gpt4 book ai didi

java - 我们可以在运行时更改单个日志语句的日志记录级别吗?

转载 作者:行者123 更新时间:2023-11-29 06:12:35 26 4
gpt4 key购买 nike

我有以下代码:

private static final Log LOGGER = LogFactory.getLog(MyClass.class);
if (LOGGER.isErrorEnabled()) {
LOGGER.error("ID_1: Log Message: " + parameter));
}

我希望将严重性设置为 WARNFATAL

如果我能够在运行时更新 log4j.properties,那么我将如何更改此消息的严重性?使用 log4j.logger.com.foo=WARN 只会更改整个包的严重性。

有没有更具体的方法?我们可以在运行时更改单个日志语句的日志级别吗?

最佳答案

简短的回答是不,你不能。

要执行您想执行的操作,您需要更改代码 以调用以 Level 作为参数的 Logger 方法,并替换守卫;例如

if (logger.isEnabledFor(level)) {
logger.log(level, "ID_1: Log Message: " + parameter, null);
}

而且我认为这不会有帮助,因为您随后会遇到将正确的值赋给 level 变量的问题。

更好的替代方法是创建一个具有唯一名称的记录器,并且仅在该特定语句中使用。然后,您可以独立于任何其他语句来控制该语句的日志记录(通过日志记录配置)。

或者,更现实地说,使用类名或包名来命名您的记录器。与单个全局记录器相比,这为您提供了更多的粒度……而不会创建大量的记录器实例。

关于java - 我们可以在运行时更改单个日志语句的日志记录级别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277108/

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