simple logger example defaulting java logging log4j slf4j

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