Log4j Проблема с Skinny WAR: журналы объединяются в один файл журнала вместо записи в отдельные файлы журнала веб-приложений.

Я использую Websphere7 для развертывания файла EAR. Файл EAR содержит два разных файла войны приложений, например App1, App2.

Я создаю файл EAR своего приложения, используя maven-ear-plugin как скинни-войну.

.
 |-- META-INF
 |   `-- application.xml
 |-- lib
 |    -- jar1
 |    -- jar2
 |    -- jar3
 |    -- log4j.jar
 |-- App1-1.0.0.war
 |     -- /WEB-INF/classes/App1-log4j.xml     |     
 `-- App2-1.0.0.war
 |     -- /WEB-INF/classes/App2-log4j.xml

Конфигурация Web.xml для разных войн

App1-1.0.0.war: Web.xml

<context-param>
            <param-name>log4jExposeWebAppRoot</param-name>
            <param-value>false</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/App1-log4j.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

App2-1.0.0.war: Web.xml

 <context-param>
                <param-name>log4jExposeWebAppRoot</param-name>
                <param-value>false</param-value>
        </context-param>

        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>/WEB-INF/classes/App2-log4j.xml</param-value>
        </context-param>

        <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>

Я столкнулся с проблемой, связанной с ведением журнала. Два разных файла журнала (app1.log и app2.log) создаются должным образом при запуске приложения. Но журналы для разных приложений собираются в один файл журнала.

Я что-нибудь упускаю? Какие-либо предложения?


person Narendra Verma    schedule 31.10.2013    source источник


Ответы (1)


Наконец, у меня есть решение этой проблемы. Чтобы получить ответ, перейдите по ссылкам ниже.

Во время реализации этого решения я заметил, что статическая переменная Logger во всех классах вызывала проблему слияния журналов. Вот хорошее объяснение этой проблемы. Прочитав это, мне пришлось преобразовать весь статический регистратор в переменную экземпляра уровня класса.

Из

частный статический финальный регистратор LOGGER = Logger.getLogger (MyApp.class);

To

частный финальный регистратор LOGGER = Logger.getLogger (MyApp.class);

После следующих изменений, фреймворк ведения журналов у меня начал работать нормально. Теперь я вижу, что все мои файлы журналов содержат журналы, относящиеся к веб-приложениям.

Если вы хотите получить подробный анализ по этому вопросу. Вы можете сослаться на это сообщение .

person Narendra Verma    schedule 01.04.2014