2010-11-29 58 views
16

我有一个使用log4j的项目。现在我必须介绍一个使用slf4j的库。我可以要求slf4j根据log4j配置初始化自己吗?所以我基本上希望log4j作为slf4j下的底层库。使用库配置SLF4J使用LOG4J配置

UPDATE:

log4j的配置是这样的:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="fileAppender" class="org.apache.log4j.rolling.RollingFileAppender"> 
     <param name="file" value="${log.dir}/${log.file}.log" /> 
     <param name="append" value="true" /> 
     <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
      <param name="FileNamePattern" value="${archive.log.dir}/${log.file}.%d{yyyy-MM-dd}.gz" /> 
      <param name="ActiveFileName" value="${log.dir}/${log.file}.log"/> 
     </rollingPolicy> 
     <layout class="org.apache.log4j.EnhancedPatternLayout"> 
      <param name="ConversionPattern" value="%d{yyMMdd HH:mm:ss,SSS} [%t] %-5p %c %X %m%n" /> 
     </layout> 
    </appender> 
    <logger name="org.hibernate"> 
     <level value="ALL" /> 
     <appender-ref ref="fileAppender"/> 
    </logger> 
    <root> 
     <priority value="info" /> 
     <appender-ref ref="fileAppender" /> 
    </root> 
</log4j:configuration> 

我也使用Apache的log4j的,额外1.0版。 log4j的版本是1.2.16

回答

25

是的,你需要在你的项目的classpath 3个jar文件:

slf4j-api-1.6.1.jar  // the slf4j API 
slf4j-log4j12-1.6.1.jar // log4j bindings for slf4j 
log4j-1.2.15.jar   // log4j itself 

确保您有slf4j-apislf4j-log4j12相同的版本,否则将无法正常工作。如果我没有弄错,你也可以使用最新的log4j版本,1.2.16。

+0

我试过了。版本就像你所建议的。该库仍然记录到标准输出,这是邪恶的:D – 2010-11-29 11:59:41