【问题标题】:How to configure log4j at project level?如何在项目级别配置 log4j?
【发布时间】:2013-01-07 05:41:23
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

标签: java log4j


【解决方案1】:

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

您可以在类路径中提供log4j.properties,log4j 会自动获取它。
PropertyConfigurator.configure("log4j.properties"); 不是必需的。

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

【讨论】:

    【解决方案2】:

    您可以通过以下方式进行配置

    # 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
    

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多