Раздельное ведение журнала между различными компонентами EE (REST / EJB) - PullRequest
0 голосов
/ 14 февраля 2019

Моя цель - разделить конфигурацию log4j между REST и EJB в веб-приложении JEE 5 (JBoss 5.1).

Для 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 log.

Как я могу разделить ведение журнала между модулями?

1 Ответ

0 голосов
/ 18 февраля 2019

Log4J сохраняет свою конфигурацию на уровне загрузчика классов.Если два модуля JEE совместно используют загрузчик классов, они будут иметь одну конфигурацию Log4J во время выполнения.

Чтобы разделить ведение журнала между модулями, вам необходимо:

  • Настройте сервер приложений наиспользовать отдельные загрузчики классов для отдельных модулей (не все серверы приложений позволяют это);и
  • Предоставить отдельную конфигурацию Log4J для каждого загрузчика классов.
...