Spring
по-прежнему использует commons-logging
для всех внутренних журналов (обратная совместимость). Если вы хотите использовать какую-либо другую платформу ведения журналов (log4j
), вам необходимо связать вызовы из commons logging
с выбранной вами платформой. В противном случае вам придется поддерживать несколько конфигураций ведения журнала.
slf4j
выступает в качестве простого фасада для различных фреймворков ведения журналов (jul
, log4j
, jcl
, logback
) и позволяет подключать нужную фреймворк ведения журналов во время развертывания.
Вместо использования реализации фреймворка ведения журнала, навязанного сторонней инфраструктурой, вы предоставляете реализацию моста slf4j's
, которая действует как реальная вещь, но на самом деле просто перенаправляет вызовы ведения журнала на slf4j
или его конкретную привязку.
Раздел ведения журнала Maven pom.xml обычно выглядит так:
<!-- remove the real commons-logging from classpath -->
<!-- declare as provided or exclude from spring jars -->
<dependency>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<!-- add slf4j interfaces to classpath -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
<scope>compile</scope>
</dependency>
<!-- add commons logging to slf4j bridge to classpath -->
<!-- acts as jcl but routes commons-logging calls to slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.4</version>
<scope>runtime</scope>
</dependency>
<!-- add log4j binding to classpath -->
<!-- routes slf4j calls to log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
<scope>runtime</scope>
</dependency>
<!-- add log4j to classpath -->
<!-- does the logging -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
Это не имеет ничего общего с контейнером Spring или внедрением зависимостей, это чистый путь к классам, загрузчик классов...
См. перейдите по ссылкам для получения дополнительной информации.
person
Bruno Dević
schedule
29.12.2011