我是log4j
的新手,需要帮助了解有关记录器实例的信息。我在我的类中将记录器定义为静态成员
public static Logger myLogger = Logger.getLogger(MyClass.class.getName());
当JVM在内存中加载类时,静态成员会加载到内存中。如果我将我的应用程序部署为Web服务,我假设该类将保留在内存中,直到应用程序运行。因此,每次请求进入时,应用程序都可以立即处理它。
如果我使用FileAppender
或JDBCAppender
,文件或数据库资源是否也会在应用程序的整个生命周期内打开。
或者,引擎盖下的log4j框架是以不同/巧妙的方式处理这些资源的。
如果没有,在使用log4j时是否有任何指导/最佳实践可以优雅地处理这些资源?
答案 0 :(得分:1)
我建议使用org.apache.log4j.RollingFileAppender
1 而不是org.apache.log4j.FileAppender
。处理小文件总是更容易......特别是如果发生错误。
我还建议使用org.apache.log4j.DBAppender
2 而不是org.apache.log4j.jdbc.JDBCAppender
。
另见:
备注的
apache-log4j-extras-1.2.17.jar
here。此appender使用数据库模式(不可自定义),您可以找到它here。如果要使用其他表,则需要重写appender。 Here是一个示例配置。