Перенаправление журналов в log4j с помощью API slf4j - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть приложение, которое использует журналирование java.util, а библиотеки, используемые этим приложением, используют различные каркасы журналирования, такие как sl4j, jcl, log4j. Теперь я хочу перенаправить все журналы в log4j, чтобы я мог получить полный контроль над ним. я добавляю эти зависимости в мой pom как this предложить. И веду журнал с использованием различных регистраторов, как показано ниже. Почему журнал util не присутствует в выходных данных .

               _loggerUtil.log(Level.SEVERE, "*********************Util log**********");
             _loggerCommon.fatal("*********commons log ************");
             _loggerSlf4j.error("**************sl4j log **************");
             _loggerLog4j.fatal("**************log4j log**************");



     2012-01-05 17:11:35,508 [http-8080-3] ERROR com.endersys.itap.ui.module.user.LoginBean - *********commons log ************
^[[19~2012-01-05 17:11:43,561 [http-8080-3] ERROR com.endersys.itap.ui.module.user.LoginBean - **************sl4j log **************
2012-01-05 17:11:44,433 [http-8080-3] FATAL com.endersys.itap.ui.module.user.LoginBean - **************log4j log**************






   <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.4</version>
    </dependency>

      <!--java util to slf4j bridge -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>1.6.4</version>
    </dependency>


        <!--common logging  to slf4j bridge -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.6.4</version>
    </dependency>


      <!--sl4j to  log4j bridge-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>

1 Ответ

4 голосов
/ 12 января 2012

Для jul-to-slf4j недостаточно просто добавить артефакт в качестве зависимости. Кроме того, вам необходимо программно настроить мост, вызвав SLF4JBridgeHandler.install() (где-нибудь во время запуска приложения, например, в прослушивателе контекста сервлета).

Примечание 1: jul-to-slf4j хорошо работает в Tomcat, потому что реализация JUL Tomcat создает пространства имен для каждого приложения. Однако я бы не рекомендовал использовать его на любом другом сервере приложений (кроме тех, которые имеют реализацию JUL, аналогичную реализации Tomcat).

Примечание 2: Вы должны внимательно прочитать Javadoc SLF4JBridgeHandler, чтобы проверить, действительно ли вы хотите использовать это (даже в Tomcat).

...