2013-01-07 71 views
4

我有一个Java项目(注意: - 它不是一个Web项目)。我使用log4j来记录消息。如何在项目级别配置log4j?

目前我下面要做的步骤是如下:

  • 创建项目一级的一个log4j.properties文件。

  • Declared Logger logger = Logger.getLogger(MyClass.class);

  • 然后使用 - > PropertyConfigurator.configure(“log4j.properties”);

  • 然后使用logger.debug(“message”);记录我的消息。

但是我觉得这种方法的问题是我必须做的所有类一样在我的项目,即从宣布Logger logger开始的所有步骤。

有什么办法让我可以在我的项目中只在一个地方配置我的记录器变量,然后只使用记录器的声明变量来记录消息?

+0

看到这个问题和答案:http://stackoverflow.com/questions/7624895/how-to-use-log4j-with-multiple-classes –

回答

4

恕我直言,你不应该有正常的日志记录一个常用的日志配置。每个班级应该在Logger logger = Logger.getLogger(MyClass.class);之前创建自己的记录器。当你没有几个类文件时,这看起来可能是一个开销,但是最好遵循这一点。
按照这种记录器模式,您可以灵活地在配置级别(在log4j.properties中)控制任何级别的记录级别(整个应用程序或任何程序包或任何类)。

您可以在您的类路径中输入log4j.properties,log4j会自动将其提取出来。
PropertyConfigurator.configure("log4j.properties");不是必需的。

如果你想这样做,你可以创建你自己的记录器类MyLoggerstatic方法记录将实际的呼叫包裹到记录器。然后从您的个人课程中,您可以拨打MyLogger.log()MyLogger.debug()进行登录。

0

您可以通过以下方式

# Set root logger level to DEBUG and its only appender to A1. 
log4j.rootLogger=DEBUG, A1 

# A1 is set to be a ConsoleAppender. 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 

# A1 uses PatternLayout. 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n