最近在開發遇到日志是使用slf4j與logback.xml的配置,所以就記錄下來了。
1、導入這幾個jar包:
Logback 分為三個模塊:logback-core,logback-classic,logback-access
logback-core 是核心;
logback-classic 改善了 log4j,且自身實現了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志實現,如原始的 Log4J,java.util.logging 等;
logback-access 讓你方便的訪問日志信息,如通過 http 的方式。
?slf4j-api.jar?
?
在工程src目錄(也就是classpath路徑下)下建立logback.xml
1.logback首先會試著查找logback.groovy文件;
2.當沒有找到時,繼續試著查找logback-test.xml文件;
3.當沒有找到時,繼續試著查找logback.xml文件;
4.如果仍然沒有找到,則使用默認配置(打印到控制臺)。
?2、logback.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- For assistance related to logback-translator or configuration -->
<!-- files in general, please contact the logback user mailing list -->
<!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
<!-- -->
<!-- For professional support please see -->
<!-- http://www.qos.ch/shop/products/professionalSupport -->
<!-- -->
<configuration scan="true" scanPeriod="30 seconds">
??? <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
??? ??? <encoder>
??? ??? ??? <pattern>[%p] [%d] [%t] [%c{1}:%L] - [%m]%n</pattern>
??? ??? </encoder>
??? ??? <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
??? ??? ??? <level>ERROR</level>
??? ??? </filter>
??? </appender>
??? <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
??? ??? <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
??? ??? ??? <FileNamePattern>../log/%d{yyyy-MM-dd/HH}/error.log.%i</FileNamePattern>
??? ??? ??? <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
??? ??? ??? ??? <maxFileSize>20MB</maxFileSize>
??? ??? ??? </timeBasedFileNamingAndTriggeringPolicy>
??? ??? </rollingPolicy>
??? ??? <encoder>
??? ??? ??? <pattern>[%-5level] [%d] [%thread] [%logger{0}:%L] - [%m]%n</pattern>
??? ??? </encoder>
??? ??? <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
??? ??? ??? <level>ERROR</level>
??? ??? </filter>
??? </appender>
??? <root level="INFO">
??? ??? <appender-ref ref="stdout" />
??? ??? <appender-ref ref="MAIN" />
??? ??? <appender-ref ref="ERROR" />
??? </root>
??
??? <appender name="CollectorDemoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
??? ??? <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
??? ??? ??? <FileNamePattern>../log/%d{yyyy-MM-dd/HH}/CollectorDemoApp.log.%i</FileNamePattern>
??? ??? ??? <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
??? ??? ??? ??? <maxFileSize>20MB</maxFileSize>
??? ??? ??? </timeBasedFileNamingAndTriggeringPolicy>
??? ??? </rollingPolicy>
??? ??? <encoder>
??? ??? ??? <pattern>[%-5level] [%d] [%thread] [%logger{0}:%L] - [%m]%n</pattern>
??? ??? </encoder>
??? </appender>
??? <logger name="cn.com.CollectorDemoApp" level="info" >
??? ??? <appender-ref ref="CollectorDemoApp" />
??? </logger>
</configuration>
3、java類中使用
private static final Logger logger = LoggerFactory.getLogger(CollectorDemoApp.class);