gpt4 book ai didi

java - 为什么这段代码是错误的?

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:16 24 4
gpt4 key购买 nike

我正在将代码从 Log4J 迁移到由 logback 1.0.13 支持的 slf4j。

如何将以下代码翻译为 slf4j ?

    import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// ...

ConsoleAppender stderr = new ConsoleAppender();
stderr.setTarget(ConsoleAppender.SYSTEM_ERR);
stderr.setLayout(layout);
stderr.addFilter(new CurrentThreadLogFilter());
stderr.setThreshold(Level.INFO);
stderr.activateOptions();

Logger loggerRECORD = getLoggerRECORD();
loggerRECORD.setLevel(Level.ALL);
loggerRECORD.setAdditivity(false);
loggerRECORD.addAppender(stderr);

Logger root = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.WARN);
root.addAppender(stderr);

// ...

private Logger getLoggerRECORD() {
return LoggerFactory.getLogger("com.company.MyClass");
}

我不知道用什么来代替 setLeveladdAppendersetAdditivity 方法。

最佳答案

AFAIK,如果你想成为“纯粹的 SLF4J”,你不能(也不应该)通过代码配置你的记录器。配置细节是特定于实现的。 (引用:slf4 FAQ)

如果您确定要使用 Logback,您有两个选择:

  1. 在代码之外使用特定于 Logback 的配置文件;或者,

  2. 当您(从 LoggerFactory)获得 Logger 时,您知道它是将是一个 Logback 实现。所以,把它转换到那个,然后使用它支持的额外方法,超越接口(interface)SLF4J。

第一个(配置文件)更容易更改。我建议走那条路。

如果您想采用第二条路线,您可以更改导入,以便我们处理 Logback 中的实际类,而不是 SLF4J 中的接口(interface)。另外,您可以在 LoggerFactory 返回 Logger 时添加强制转换。

完成此操作后,您会发现 Logger 类现在支持您正在寻找的 setLevel() 和 setAdditive() 方法。请参阅Logback javadocs了解更多信息。

关于java - 为什么这段代码是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638767/

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