2012-01-05 39 views
14

我有下面的代码在Java 1.6的:slf4j如何工作?没有日志越来越创建

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

private static Logger log = LoggerFactory.getLogger(myfile.class); 

现在,我把SLF4J-API-1.6.4.jar & SLF4J-简单1.6.4.jar在类路径&代码编译好,但它在哪里记录所有的信息?

我已经log.info( “测试”);但它不创建任何日志文件。我试着用下面创建内容log4j.properties:

log4j.appender.stdout=org.apache.log4j.RollingFileAppender 
log4j.appender.stdout.File=/var/abc.log 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}]%6p %c{1}:%L - %m%n 
log4j.appender.stdout.MaxFileSize=50000KB 
log4j.appender.stdout.MaxBackupIndex=200 

log4j.rootLogger=info, stdout 

但其没有工作,我知道上面的文件需要log4j的,但怎么做SLF4J工作?我是否需要创建类似于log4j的任何属性文件?如果是这样,我需要把它放在哪里?

谢谢!

+1

SLF4J只是一个日志接口。您需要在类路径上执行日志记录。你是否有一个? – 2012-01-05 03:24:30

+0

您导入slf4j-simple-1.6.4.jar,但您使用log4j作为记录器,这就是问题所在。 – 2012-01-05 03:36:44

回答

34

SLF4J只是一个门面,它允许你切换不同的日志框架容易。所有使用SLF4J API的日志调用将被委托给底层的日志框架。

您不必为SLF4J创建任何属性文件。您需要做的就是使用与您的日志框架相匹配的正确“SLF4J绑定”jar来将SLF4J API的所有日志记录调用委托给基础日志框架。下图为SLF4J之间的关系,“SLF4J绑定”,和底层的日志框架

enter image description here

slf4j-simple-1.6.4.jar代表所有事件到System.err的,但并不代表们的log4j API.So,你应该使用slf4j-log4j12-1.6.4.jar代替。

要总结,你应该使用下面的罐子:

  • SLF4J-API-1.6.4.jar
  • SLF4J-log4j12-1.6.4.jar
  • 的log4j-1.2.16。罐子

参考

1

SLF4J仅仅是一个日志抽象 - 它不写任何日志本身。使用Logback - 它本身实现了SLF4J,由谁写SLF4J和log4j的是同一个人写的。 SLF4J和的logback是一个伟大的框架 - 我们爱怎么SLF4J桥接其他框架(JUL,共享日志记录,log4j的),我们选择的架构(这是的logback)。

+0

我可以使用log4j和这个slf4j一起吗? – Mike 2012-01-05 03:27:14

+0

是的,如果您愿意,可以使用SLF4J登录到log4j。这就是SLF4J的美妙之处 - 登录到其界面并随时更改实现。您需要将文件slf4j-log4j.jar(或类似的东西,我从内存中写入)添加到类路径中,当然您需要一个log4j属性文件。 Logback与log4j非常相似 - 正如我所说他们是由同一个人。 Logback避免了log4j的一些缺点......他从制作log4j中学到了:) – Paul 2012-01-05 03:34:19

0

我用SLF4J-API(JAR)。我用logback-classic替换了依赖(jar)logback-core,然后开始记录。