如何让SLF4J“Hello World”与log4j一起工作?

2022-08-31 19:43:53

SLF4J的“Hello World”示例对我不起作用。我想这是因为我在类路径中添加了slf4j-log4。我应该直接配置log4j以使hello世界正常工作吗?

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.

更新:我添加了log4j初始化,但它仍然不起作用:

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");
    }

我得到:

log4j:ERROR No output stream or file set for the appender named [null].

答案 1

如果要使用 ,则需要在类路径上使用这些文件:slf4j simplejar

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

如果要使用 和 ,则需要在类路径上使用这些文件:slf4jlog4jjar

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

不多也不少。使用 ,您将在级别或更高级别获得到控制台的基本日志记录。使用 ,则必须相应地对其进行配置slf4j simpleINFOlog4j


答案 2

下面是一个示例。您可以在此处查看详细信息 http://jkssweetlife.com/configure-slf4j-working-various-logging-frameworks/ 并下载完整代码。

  • 如果您使用的是maven,请将以下依赖项添加到您的pom中,否则,只需下载jar文件并放在您的类路径上

    <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>
    
  • 配置 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 示例

    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);
        }
    }
    

推荐