gpt4 book ai didi

java - 扩展 logback 并允许客户端使用干净的 slf4j

转载 作者:行者123 更新时间:2023-11-30 09:19:31 25 4
gpt4 key购买 nike

我正在使用 slf4j 和 logback 为几个项目构建记录器,除了记录器附带的功能之外,我想向记录器添加更多方法:log.debug(String key, String[] params , Throwable throwable)(信息、警告和错误也一样)。该 key 将从资源文件中获取一个字符串,并用 String[] 中的参数填充它并记录它。
如果可能的话,我希望用户使用干净的 slf4j 而不是绑定(bind)到 logback。我正在考虑使用我的功能扩展 logback,并为 slf4j 编写一个绑定(bind)到我扩展的新 logback。
那是正确的方法吗?如果是这样,我该如何扩展 logback?
通过查看其他绑定(bind),我了解到它们没有实现标记。有没有绑定(bind)到某物的例子?所以我可以用它作为“logback extended”绑定(bind)的框架吗?

最佳答案

我同意 SLF4J 缺少用于报告异常的所有参数合一的方法,但我认为其他类型(信息、警告...)不需要它。

您可以创建一个具有这些方法的实用程序类 LoggerWrapper:

class LoggerWrapper extends Logger {
private Logger logger;
private ResourceBundle bundle;

public LoggerWrapper(Logger logger, ResourceBundle bundle) {
this.logger = logger;
this.bundle = bundle;
}

public void error(final String key, Object[] params, Throwable cause) {
logger.error(String.format(bundle.getString(key), params), cause);
}
...
}

示例用法:

class Something {
private static LoggerWrapper logger = new LoggerWrapper(
Logger.getLog(Something.class),
ResourceBundle.getBundle("ErrorMessages"));

...
private void doSomething(Object params...) {
try {
// Do something that could fail.
}
catch (SomeException e) {
logger.error("error.something.failed", params, e);
}
}
}

关于java - 扩展 logback 并允许客户端使用干净的 slf4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17941282/

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