1. 程式人生 > >logback日誌元件的配置和使用

logback日誌元件的配置和使用

1. logback介紹

Logback是由log4j創始人設計的又一個開源日誌元件。logback當前分成三個模組:logback-core,logback- classic和logback-access。logback-core是其它兩個模組的基礎模組。logback-classic是log4j的一個 改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日誌系統如log4j或JDK14 Logging。logback-access訪問模組與Servlet容器整合提供通過Http來訪問日誌的功能。

2. maven依賴

    <!-- logback+slf4j -->  
    <dependency>  
        <groupId>org.slf4j</groupId>  
        <artifactId>slf4j-api</artifactId>  
        <version>1.6.0</version>  
        <type>jar</type>  
        <scope>compile</scope>  
    </dependency>  
    <dependency>  
        <groupId>ch.qos.logback</groupId>  
        <artifactId>logback-core</artifactId>  
        <version>0.9.28</version>  
        <type>jar</type>  
    </dependency>  
    <dependency>  
        <groupId>ch.qos.logback</groupId>  
        <artifactId>logback-classic</artifactId>  
        <version>0.9.28</version>  
        <type>jar</type>  
    </dependency>  

如果你沒有使用maven,那麼你自己去下載jar包吧...

3. 配置和使用

1. 日誌使用

我們使用org.slf4j.LoggerFactory,就可以直接使用日誌了。

    protected final Logger       logger = LoggerFactory.getLogger(this.getClass());  

使用:
@Controller  
@RequestMapping(value = "")  
public class IndexController extends BaseController {  
  
    /** 
     * Success 
     * @param response 
     * @throws IOException 
     */  
    @RequestMapping(value = "")  
    @ResponseBody  
    public void hello(HttpServletResponse response) throws IOException {  
        logger.debug("DEBUG TEST 這個地方輸出DEBUG級別的日誌");  
        logger.info("INFO test 這個地方輸出INFO級別的日誌");  
        logger.error("ERROR test 這個地方輸出ERROR級別的日誌");  
    }  
  
} 

2. 在控制檯輸出特定級別的日誌

logback的配置檔案都放在/src/main/resource/資料夾下的logback.xml檔案中。其中logback.xml檔案就是logback的配置檔案。只要將這個檔案放置好了之後,系統會自動找到這個配置檔案。

下面的配置中,我們輸出特定的ERROR級別的日誌:

    <?xml version="1.0"?>  
    <configuration>  
      
        <!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 -->  
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">  
            <encoder>  
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>  
            </encoder>  
        </appender>  
      
        <!-- 日誌級別 -->  
        <root>  
            <level value="error" />  
            <appender-ref ref="console" />  
        </root>  
      
    </configuration>   


結果只在控制檯輸出ERROR級別的日誌。

3. 設定輸出多個級別的日誌

    <?xml version="1.0"?>  
    <configuration>  
      
        <!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 -->  
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">  
            <encoder>  
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>  
            </encoder>  
        </appender>  
      
        <!-- 日誌級別 -->  
        <root>  
            <level value="error" />  
            <level value="info" />  
            <appender-ref ref="console" />  
        </root>  
      
    </configuration>   


設定兩個level,則可以輸出 ERROR和INFO級別的日誌了。

4. 設定檔案日誌

    <?xml version="1.0"?>  
    <configuration>  
      
        <!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 -->  
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">  
            <encoder>  
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n  
                </pattern>  
            </encoder>  
        </appender>  
      
        <!-- ch.qos.logback.core.rolling.RollingFileAppender 檔案日誌輸出 -->  
        <appender name="file"  
            class="ch.qos.logback.core.rolling.RollingFileAppender">  
            <Encoding>UTF-8</Encoding>  
            <File>/home/test.log</File>  
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
                <FileNamePattern>/home/test-%d{yyyy-MM-dd}.log  
                </FileNamePattern>  
                <MaxHistory>10</MaxHistory>  
                <TimeBasedFileNamingAndTriggeringPolicy  
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
                    <MaxFileSize>5MB</MaxFileSize>  
                </TimeBasedFileNamingAndTriggeringPolicy>  
            </rollingPolicy>  
            <layout class="ch.qos.logback.classic.PatternLayout">  
                <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n  
                </pattern>  
            </layout>  
        </appender>  
      
        <!-- 日誌級別 -->  
        <root>  
            <!-- 定義了ERROR和INFO級別的日誌,分別在FILE檔案和控制檯輸出 -->  
            <level value="error" />  
            <level value="info" />  
            <appender-ref ref="file" />   
            <appender-ref ref="console" />  
        </root>  

        <!--精確設定每個包下面的日誌-->
        <logger name="com.xxx" additivity="false">  
            <level value="info" />  
            <appender-ref ref="file" />  
            <appender-ref ref="console" />  
        </logger>
</configuration>

詳細參考:http://logback.qos.ch/manual/configuration.html