如何在项目级别上配置log4j?

4

我有一个Java项目(注:这不是Web项目),我正在使用log4j记录消息。

目前,我采取的步骤如下:

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

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

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

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

但是我觉得这种方法的问题是,我必须在我的项目中的所有类中都执行同样的操作,即从声明“Logger logger”开始的所有步骤。

是否有一种方法可以在项目中的单个位置配置我的logger变量,然后只需使用已声明的logger变量记录消息?


请参考以下问题和答案:https://dev59.com/P2sz5IYBdhLWcg3w17jQ - Nikolay Kuznetsov
2个回答

4
在我看来,你不应该为普通的日志记录创建一个常规的记录器。每个类应该通过Logger logger = Logger.getLogger(MyClass.class);创建自己的记录器。当您只有少量类文件时,这可能会看起来很繁琐,但遵循此方法会更好。
通过遵循这种记录器模式,您可以在配置级别(log4j.properties中)控制任何级别(整个应用程序、任何包或任何类)的日志记录级别,从而获得灵活性。
您可以在类路径下提供log4j.properties,log4j将自动获取它。
PropertyConfigurator.configure("log4j.properties");不是必需的。
如果您仍然想要这样做,您可以创建自己的记录器类MyLogger,其中包含用于记录的static方法,这些方法将包装实际的记录器调用。然后从您的各个类中,您可以调用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接