如何获得使用log4j的SLF4J“Hello World”?

SLF4J的“Hello World”例子对我来说不起作用。 我想这是因为我添加了slf4j-log4到我的类path。 我应该直接configurationlog4j让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]. 

如果你想使用slf4j simple ,你需要在你的类path上的这些jar文件:

  • SLF4J-API-1.6.1.jar
  • SLF4J-简单1.6.1.jar

如果你想使用slf4jlog4j ,你需要在你的类path中使用这些jar文件:

  • SLF4J-API-1.6.1.jar
  • SLF4J-log4j12-1.6.1.jar
  • log4j的-1.2.16.jar

没有更多,不能less。 slf4j simple使用slf4j simple ,你就可以在INFO级别或者更高的级别获得基本的日志logging。 使用log4j ,你必须相应地configuration它 。

以下是一个例子。 您可以查看详细信息http://www.luyue.org/configure-slf4j-working-various-logging-frameworks并在此处下载完整的代码。;

  • 如果你正在使用maven,那么添加下面的依赖到你的pom,否则,只需下载jar文件并放到你的类path中

     <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> 
  • configurationlog4j.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); } } 
 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 

我有同样的问题。 直接使用log4j api时,我从代码的log4j.properties文件中调用了自己的自定义logging器。 如果你正在使用slf4j api调用,你可能使用了默认的根logging器,所以你必须configuration它与log4j.properties中的appender相关联:


     #将根logging器级别设置为DEBUG,并将其唯一的appender设置为A1。
     log4j.rootLogger = DEBUG,A1

     #A1被设置为一个ConsoleAppender。
     log4j.appender.A1 = org.apache.log4j.ConsoleAppender