How to get SLF4J “Hello World” working with log4j?

后端 未结 5 938
耶瑟儿~
耶瑟儿~ 2020-12-04 13:18

The \"Hello World\" example from SLF4J is not working for me. I guess this is because I added slf4j-log4 to my classpath. Should I configure log4j directly for the hello wor

相关标签:
5条回答
  • 2020-12-04 13:31

    If you want to use slf4j simple, you need these jar files on your classpath:

    • slf4j-api-1.6.1.jar
    • slf4j-simple-1.6.1.jar

    If you want to use slf4j and log4j, you need these jar files on your classpath:

    • slf4j-api-1.6.1.jar
    • slf4j-log4j12-1.6.1.jar
    • log4j-1.2.16.jar

    No more, no less. Using slf4j simple, you'll get basic logging to your console at INFO level or higher. Using log4j, you must configure it accordingly.

    0 讨论(0)
  • 2020-12-04 13:42

    Following is an example. You can see the details http://jkssweetlife.com/configure-slf4j-working-various-logging-frameworks/ and download the full codes here.

    • Add following dependency to your pom if you are using maven, otherwise, just download the jar files and put on your 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>
      
    • Configure 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
      
    • Java example

      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);
          }
      }
      
    0 讨论(0)
  • 2020-12-04 13:48

    I had the same problem. I called my own custom logger in the log4j.properties file from code when using log4j api directly. If you are using the slf4j api calls, you are probably using the default root logger so you must configure that to be associated with an appender in the 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
    
    
    0 讨论(0)
  • 2020-12-04 13:50

    Here a working example to use slf4j as façade with log4j in the backend:

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.30</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.30</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.13.3</version>
            </dependency>
        </dependencies>
    </project>
    

    src/main/resources/log4j.properties

    # Root logger option
    log4j.rootLogger=DEBUG, stdout
    
    # Direct log messages to 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
    

    src/main/java/Main.java

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class Main {
        private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
        /**
         * Default private constructor.
         */
        private Main() {
        }
    
        /**
         * Main method.
         *
         * @param args Arguments passed to the execution of the application
         */
        public static void main(final String[] args) {
            logger.info("Message to log");
        }
    }
    
    0 讨论(0)
  • 2020-12-04 13:52
    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
    
    0 讨论(0)
提交回复
热议问题