Java:sl4j如何记录所有类?

时间:2011-11-26 04:40:30

标签: java slf4j

是否可以将所有类记录到单个文件而不是

final Logger logger = LoggerFactory.getLogger(Wombat.class);

你需要为所有课程记录什么?

2 个答案:

答案 0 :(得分:10)

答案简短......

您在代码中使用的Logger没有说明日志消息的输出位置。 (决定消息的去向是绑定和你使用的配置。)

请注意,具有相同Logger的邮件将强制转到同一个位置,因为您将无法再将它们分开 - 所以您希望每个班级都有它自己的Logger,以便您以后有最大的选择。

如果要将所有日志消息输出到单个文件,我建议的选项是使用log4j绑定以及我在下面给出的第二个log4j.properties示例。在大多数情况下,你应该能够复制/粘贴它以便运行,然后在闲暇时进行配置。

答案很长......

涵盖SLF4J及其部分绑定。

SLF4J

来自网站http://www.slf4j.org/

  

简单日志外观Java或(SLF4J)就像一个简单的   各种日志框架的外观或抽象,例如,   java.util.logging,log4j和logback,允许最终用户插入   部署时所需的日志框架。

所以这完全取决于你使用的绑定! 实际上,我们的想法是,您甚至不必在运行时就解决绑定问题,并且不需要更改任何日志记录代码以便以后改变主意!

我将讨论我熟悉的两个,请注意还有其他一些,你应该考虑在做出自己的研究之前确定一个特定的实现。

简单绑定

简单绑定(例如,slfj-simple-1.6.4.jar)没有配置。

它只是将INFO及以上的所有消息记录到标准错误输出(System.err)。

Log4j Binding

一般来说,你想使用更复杂的绑定,比如log4j(这是我使用的,所以会谈到)。它比简单绑定更灵活,但需要你做一些配置。

首先,您需要一个不同的绑定jar(例如,slf4j-log4j12-1.6.4.jar)。您还需要相应的log4j jar(例如log4j-1.2.16)。最后,您需要配置log4j本身 - 一个log4j.properties文件,位于项目的根目录中。

我将跳转到几个示例log4j.properties文件


第一个将所有内容输出到控制台,并且与简单绑定实现的非常相似,除了您可以配置您登录的级别(TRACE,DEBUG,WARN,INFO,ERROR)和输出模式。 / p>

# Root Logger : TRACE & above to console appender
log4j.rootLogger=TRACE, console
# Appender : Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-8r %-5p %c [%t] %m%n

要输出到单个文件,您需要一个不同的appender,例如:

# Root Logger : WARN & above to mainFile appender
log4j.rootLogger=WARN,mainFile
# Appender : mainFile
log4j.appender.mainFile=org.apache.log4j.FileAppender
log4j.appender.mainFile.File=main.log
log4j.appender.mainFile.layout=org.apache.log4j.PatternLayout
log4j.appender.mainFile.layout.ConversionPattern=%-8r %-5p %c [%t] %m%n

Log4j围绕记录器和追加器的概念设置。

记录器(与您将与SLF4J一起使用的记录器类不同)根据某种模式(例如特定包中的消息)捕获消息,并将它们传递给appender。

Appenders 定义消息的输出方式(例如文件,网络,控制台,数据库)及其格式。

答案 1 :(得分:1)

您可以使用命名记录器:

final Logger logger = LoggerFactory.getLogger("MyLogger");

以下是docs的链接。