【发布时间】:2012-02-16 11:12:12
【问题描述】:
我是第一次尝试使用 SLF4J(带有log4j 绑定)。
我想配置 3 个不同的命名记录器,它们可以由 LoggerFactory 返回,它们将记录不同的级别并将消息推送到不同的附加程序:
- Logger 1 "FileLogger" 记录 DEBUG 并附加到
DailyRollingFileAppender - Logger 2 "TracingLogger" 记录 TRACE+ 并附加到
JmsAppender - Logger 3 "ErrorLogger" 记录 ERROR+ 并附加到不同的
JmsAppender
此外,我希望它们以编程方式配置(在 Java 中,而不是在 XML 或 log4j.properties 文件中)。
我想,通常情况下,我会在一些引导代码中的某处定义这些 Loggers,例如 init() 方法。然而,因为我想使用slf4j-log4j,我很困惑我可以在哪里定义记录器并使它们可用于类路径。
我不相信这违反了 SLF4J 的基本目的(作为外观),因为我使用 SLF4J API 的代码永远不会知道这些记录器的存在。我的代码只是对 SLF4J API 进行正常调用,然后将它们转发到它在类路径上找到的 log4j 记录器。
但是如何在类路径上配置那些 log4j 记录器...在 Java 中?!
【问题讨论】:
-
对于 log4j 1.x,请使用下面接受的 2.x 答案,请参阅logging.apache.org/log4j/2.x/manual/customconfig.html