Spring
sigue usando commons-logging
para todo el registro interno (compatibilidad con versiones anteriores). Si desea utilizar algún otro marco de trabajo de registro (log4j
), entonces necesita puente las llamadas desde commons logging
al marco de su elección. De lo contrario, deberá mantener múltiples configuraciones de registro.
slf4j
actúa como una fachada simple para diversos marcos de registro (jul
, log4j
, jcl
, logback
) y le permite conectar en el marco de registro deseada durante el despliegue.
En lugar de utilizar la implementación del marco de registro que impone el marco de terceros, proporciona la implementación del puente slf4j's
que funciona como algo real pero realmente solo reenvía las llamadas al slf4j
o su enlace concreto.
sección Registro de Maven pom.xml por lo general es el siguiente:
<!-- 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>
Esto no tiene nada que ver con el contenedor de primavera, ni la inyección de dependencias, es la ruta de clase pura, cosas cargador de clases ...
Consulte thefollowing enlaces para obtener más información.
por lo que en tiempo de ejecución utiliza la inyección de dependencia? todavía confundido lo siento. – codecompleting
No, el experto ''. Tal vez no entiendo la pregunta? ¿Puedes aclararlo? –
kan