4

我有一个 java 项目(注意:- 它不是一个 web 项目)。我正在使用 log4j 来记录消息。

目前我正在执行的步骤如下:

  • 在项目级别创建了一个 log4j.properties 文件。

  • 声明的 Logger logger = Logger.getLogger(MyClass.class);

  • 然后使用 -> PropertyConfigurator.configure("log4j.properties"); 配置属性

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

但是我觉得这种方法的问题是我必须在我的项目中的所有类中做同样的事情,即从声明开始的所有步骤Logger logger

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

4

2 回答 2

4

恕我直言,您不应该有一个用于正常记录目的的通用记录器。每个类都应该通过Logger logger = Logger.getLogger(MyClass.class);. 当您的类文件很少时,这似乎是一种开销,但最好遵循这一点。
通过遵循这种记录器模式,您可以灵活地在配置级别(在 log4j.properties 中)控制任何级别(整个应用程序或任何包或任何类)的日志记录级别。

你可以log4j.properties输入你的类路径,log4j 会自动拾取它。
PropertyConfigurator.configure("log4j.properties");不需要。

尽管如此,如果您想这样做,您可以创建自己的记录器类MyLoggerstatic其中包含对记录器的实际调用的记录方法。然后从您的个人课程中,您可以致电MyLogger.log()MyLogger.debug()登录。

于 2013-01-07T06:03:46.043 回答
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
于 2013-01-07T05:49:12.047 回答