跨不同EE组件分离日志记录(REST / EJB)

问题描述 投票:0回答:1

我的目的是在JEE 5 Web应用程序(JBoss 5.1)中将REST和EJB之间的log4j配置分开。

对于REST模块,我使用ServletContextListener接口:

public void contextInitialized(ServletContextEvent sce) {
     PropertyConfigurator.configure("logfile");
}

对于EJB模块,我使用的是StartupBeanManagement接口:

@Override
public void start() throws Exception {
    logger.info("starting configuration bean");
    final String env = System.getProperty("env");
    configureLog(logFilePrefix.replace("{0}", env));
}

但是,如果两个模块都部署在同一个容器上,我只能在专用的REST日志上看到日志。

如何在模块之间分离日志记录?

logging log4j ejb java-ee-5
1个回答
0
投票

Log4J在类加载器级别保持其配置。如果两个JEE模块共享一个类加载器,它们将在运行时具有单个Log4J配置。

为了分离模块之间的日志记录,您需要:

  • 配置您的应用程序服务器,为单独的模块使用单独的类加载器(并非所有应用程序服务器都允许);和
  • 为每个类加载器提供单独的Log4J配置。
© www.soinside.com 2019 - 2024. All rights reserved.