log4j - 日志包装器 - log4j

标签 log4j wrapper

我需要做一个包装接口(interface),以便您可以在不同类型的日志记录机制之间切换而无需更改代码。所以我在 Wrapper 类中有自己的 info(String message) 方法,例如:

公共(public)无效信息(对象消息)
{
if ( isInfoEnabled() )
{
logger.info(消息);
}
}

它按预期工作,除了在记录时它不显示我正在记录的类和行,而是来自 Wrapper 类的那些。
你能帮忙吗...

最佳答案

我的建议是使用 Simple Logging Facade for Java (SLF4J)而不是你自己的包装器。从其网站:

The Simple Logging Facade for Java or (SLF4J) serves as a simple facade or abstraction for various logging frameworks, e.g. java.util.logging, log4j and logback, allowing the end user to plug in the desired logging framework at deployment time.



这是 Jakarta Commons Logging (JCL) 的更现代和首选的替代方案。我推荐阅读this article进行详分割析,但简短的版本是 SLF4J 不会遭受 JCL 观察到的类加载器问题或内存泄漏。 Commons Logging 的作者 admits it .

如果您想知道,SLF4J 是由 Log4J 的作者 Ceki Gülcü 编写的(现在工作于 Logback,Log4J 的继任者)。所以这个人对伐木略知一二,而且“他的”包装器有可能比我的更好。

换句话说,恕我直言,在 2010 年创建一个包装器是没有意义的,因为已经存在一个很好的包装器。

1 请不要使用 Spring 作为反例,Spring 是一个不好的反例(参见 SPR-5327)。

关于log4j - 日志包装器 - log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185536/

相关文章:

c# - 用于运行 C# 代码的 Python 包装器

java - java 中的 std::wstring sFile

jakarta-ee - Mybatis:log4j:WARN 找不到记录器的附加程序 (org.apache.ibatis.logging.LogFactory)

带有 LogStash 的 JSON 变体 (Log4J)

python - 如何为 DLL 库创建 Python 包装器

c - 包含 jni.h : No such file or directory, 路径

html - global wrapper div min-height 100vh 打破固定在移动设备上的 child

java - log4j隐藏jar文件的名称

java - SLF4J-Log4J 似乎没有禁用日志记录

java - 如何将 javaw.exe 控制台输出重定向到日志文件?