java - logger - slf4j-simple
Cómo conseguir SLF4J "Hello World" trabajando con log4j? (4)
El ejemplo "Hello World" de SLF4J no funciona para mí. Supongo que esto es porque agregué slf4j-log4 a mi classpath. ¿Debo configurar log4j directamente para que funcione el hello world?
log4j:WARN No appenders could be found for logger (HelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Actualización : agregué la inicialización de log4j, y todavía no funciona:
public static void main(String[] params) {
org.apache.log4j.Logger.getRootLogger().addAppender(new ConsoleAppender());
Logger logger = org.slf4j.LoggerFactory.getLogger(TestBase.class);
logger.info("Hello World");
}
Y estoy obteniendo:
log4j:ERROR No output stream or file set for the appender named [null].
El siguiente es un ejemplo. Puede ver los detalles http://www.luyue.org/configure-slf4j-working-various-logging-frameworks y descargar los códigos completos here .
Agregue la siguiente dependencia a su pom si está usando maven; de lo contrario, simplemente descargue los archivos jar y coloque su classpath
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency>
Configurar log4j.properties
log4j.rootLogger=TRACE, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd''T''HH:mm:ss.SSS} %-5p [%c] - %m%n
Ejemplo de Java
public class Slf4jExample { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(Slf4jExample.class); final String message = "Hello logging!"; logger.trace(message); logger.debug(message); logger.info(message); logger.warn(message); logger.error(message); } }
Si desea utilizar slf4j simple
, necesita estos archivos jar
en su classpath:
- slf4j-api-1.6.1.jar
- slf4j-simple-1.6.1.jar
Si desea usar slf4j
y log4j
, necesita estos archivos jar
en su classpath:
- slf4j-api-1.6.1.jar
- slf4j-log4j12-1.6.1.jar
- log4j-1.2.16.jar
Ni mas ni menos. Con slf4j simple
, obtendrá un registro básico en su consola a nivel de INFO
o superior. Usando log4j
, debe configurarlo como corresponda .
Yo tuve el mismo problema. Llamé a mi propio registrador personalizado en el archivo log4j.properties desde el código al usar log4j api directamente. Si está utilizando las llamadas slf4j api, probablemente esté utilizando el registrador de raíz predeterminado, por lo que debe configurarlo para asociarlo con un appender en log4j.properties:
# Set root logger level to DEBUG and its only appender to A1. log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender
you need to add 3 dependency ( API+ API implementation + log4j dependency)
Add also this
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
# And to see log in command line , set log4j.properties
# Root logger option
log4j.rootLogger=INFO, file, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
#And to see log in file , set log4j.properties
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./logs/logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n