如何在JavaEE应用程序中尽早初始化Log4J?
我想在EAR应用程序中首先初始化Log4j,以便所有其他模块和类都可以使用该记录器 我该怎么做 我对战争和多个EJB jars很敏感。 目前,我正在用Servlet的init方法初始化它,但我似乎有一些类,例如在那之前加载和初始化的计时器 我需要以编程方式初始化Log4j,因为我想为Log4j配置文件提供一个自定义位置。在应用服务器或容器启动期间,我无法通过配置参数传入文件如何在JavaEE应用程序中尽早初始化Log4J?,java,jakarta-ee,logging,initialization,Java,Jakarta Ee,Logging,Initialization,我想在EAR应用程序中首先初始化Log4j,以便所有其他模块和类都可以使用该记录器 我该怎么做 我对战争和多个EJB jars很敏感。 目前,我正在用Servlet的init方法初始化它,但我似乎有一些类,例如在那之前加载和初始化的计时器 我需要以编程方式初始化Log4j,因为我想为Log4j配置文件提供一个自定义位置。在应用服务器或容器启动期间,我无法通过配置参数传入文件 应用程序服务器是Websphere 8.5,但首选符合通用标准的解决方案。我认为编程上不需要任何初始化。它可以通过Java
应用程序服务器是Websphere 8.5,但首选符合通用标准的解决方案。我认为编程上不需要任何初始化。它可以通过Java选项初始化,例如-Dlog4j。。。启动容器时
请参见目前我需要以编程方式进行此操作,因为我正在硬编码一个自定义配置文件名,这并不理想,但我将不得不接受它。我编辑了这个问题来解决这个问题。为什么不这样做呢-Dlog4j.configuration=myCustomFile.properties我在部署、启动或应用程序时无法传递配置参数。应用服务器不在我的控制之下,有许多应用正在运行。我继承了这个应用程序的部署等过程,不想改变现状。最终,我可能能够稍微清理一下一切,但目前我只想解决一些日志消息丢失这一最紧迫的问题,因为log4j init并不是第一件发生的事情。我非常确定JEE容器将在web层的任何servlet之前实例化EJB服务层。servlet需要EJB来工作,而不是相反。解决方法可以是在创建的第一个EJB中初始化log4j?您可以使用“@Startup”@Singleton”来启动它。