Log4j记录器的使用寿命及其使用的资源

时间:2015-03-05 17:28:24

标签: java resources log4j lifecycle

我是log4j的新手,需要帮助了解有关记录器实例的信息。我在我的类中将记录器定义为静态成员

public static Logger myLogger = Logger.getLogger(MyClass.class.getName());

当JVM在内存中加载类时,静态成员会加载到内存中。如果我将我的应用程序部署为Web服务,我假设该类将保留在内存中,直到应用程序运行。因此,每次请求进入时,应用程序都可以立即处理它。

如果我使用FileAppenderJDBCAppender,文件或数据库资源是否也会在应用程序的整个生命周期内打开。 或者,引擎盖下的log4j框架是以不同/巧妙的方式处理这些资源的。

如果没有,在使用log4j时是否有任何指导/最佳实践可以优雅地处理这些资源?

1 个答案:

答案 0 :(得分:1)

我建议使用org.apache.log4j.RollingFileAppender 1 而不是org.apache.log4j.FileAppender。处理小文件总是更容易......特别是如果发生错误。

我还建议使用org.apache.log4j.DBAppender 2 而不是org.apache.log4j.jdbc.JDBCAppender

另见:


备注

  1. Here是一个示例配置。
  2. 来自Apache Extras for Apache log4j。您可以下载文件apache-log4j-extras-1.2.17.jar here。此appender使用数据库模式(不可自定义),您可以找到它here。如果要使用其他表,则需要重写appender。 Here是一个示例配置。