1.引入
slf4j-api.jar
、
logback-core.jar、logback-classic.jar
2.提供logback-test.xml或是logback.xml
3.
在每个需要执行记录的类里,调用 org.slf4j.LoggerFactory 类的 getLogger()方法获
取一个 Logger 实例,以当前类名或类本身作为参数。
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds" debug="false"> <property name="log.base" value="../logs/center_order" /> <jmxConfigurator /> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.base}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.zip</FileNamePattern> </rollingPolicy> <encoder> <pattern>%date %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <logger name="org.springframework" additivity="false"> <level value="ERROR" /> <appender-ref ref="stdout" /> <appender-ref ref="logfile" /> </logger> <logger name="org.hibernate" additivity="false"> <level value="ERROR" /> <appender-ref ref="stdout" /> <appender-ref ref="logfile" /> </logger> <logger name="org.apache.struts2" additivity="false"> <level value="ERROR" /> <appender-ref ref="stdout" /> <appender-ref ref="logfile" /> </logger> <logger name="com.centerorder" additivity="false"> <level value="debug" /> <appender-ref ref="stdout" /> <appender-ref ref="logfile" /> </logger> <root> <level value="INFO" /> <appender-ref ref="stdout" /> <appender-ref ref="logfile" /> </root> </configuration>
1.Log4j转换到logback后,运行后spring的日志都以红字输出到控制台,而不受logback控制。
因为Spring的日志默认采用commons-logging,解决方法是在工程中引入jcl-over-slf4j-1.6.1.jar,这样就将commons-logging与slf4j对接,再通过logback进行了日志的统一输出。
2.切换完成后,启动工程时会出现java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory这个错误。
原因是slf4j-api的jar包版本太低,改为slf4j-api-1.6.4.jar即可解决。
扫描二维码关注公众号,回复:
345987 查看本文章