1. 程式人生 > >SpringBoot入門系列:第三篇 日誌輸出

SpringBoot入門系列:第三篇 日誌輸出

Java程式,日誌輸出,我認為是第一位的,把它的應用拿到這裡。

Spring-Boot對日誌的處理,和我們往常的處理完全可以一致,通過logback.xml進行處理,即使有更先進的東西,我們也不用去管它。

這裡,為了簡便,我們任然使用前一篇的工程spring-boot-sample-data

第一步,在src/main/resources中增加logback.xml檔案,檔案內容為(這裡僅最簡單的,根據工程情況,進行相應的配置):

<pre name="code" class="html"><configuration>  
    <!-- %m輸出的資訊,%p日誌級別,%t執行緒名,%d日期,%c類的全名,,,, -->  
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder>  
            <pattern>%d %p (%file:%line\)- %m%n</pattern>
            <charset>GBK</charset> 
        </encoder>  
    </appender>  
    <appender name="baselog"  
        class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <File>log/base.log</File>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>log/base.log.%d.%i</fileNamePattern>  
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
        		<!-- or whenever the file size reaches 64 MB -->  
        		<maxFileSize>64 MB</maxFileSize>  
      		</timeBasedFileNamingAndTriggeringPolicy>  
        </rollingPolicy>  
        <encoder>  
            <pattern>  
                %d %p (%file:%line\)- %m%n
            </pattern>  
            <charset>UTF-8</charset> <!-- 此處設定字符集 --> 
        </encoder>  
    </appender>  
    <root level="info">  
        <appender-ref ref="STDOUT" />  
    </root>  
    <logger name="com.example" level="DEBUG">  
        <appender-ref ref="baselog" />  
    </logger>  
</configuration>

注:1、控制檯和日誌檔案的字符集

       2、日誌檔案的存放位置,須要遵守linux的命名規則

第二步,改造HelloController檔案,改造結果如下

package com.example;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

	protected static Logger logger=LoggerFactory.getLogger(HelloController.class);
	
	@RequestMapping("/")
	public String helloworld(){
		logger.debug("訪問hello");
		return "Hello world!";
	}
	
	@RequestMapping("/hello/{name}")
	public String helloName(@PathVariable String name){
		logger.debug("訪問helloName,Name={}",name);
		return "Hello "+name;
	}
}
注:在新增引用時,日誌的包一定是org.slf4j.Logger、org.slf4j.LoggerFactory

第三步、測試

1、執行程式

2、在瀏覽器中依次輸入

http://localhost:8080/

http://localhost:8080/hello/上帝

3、在工程所在的根目錄找到log資料夾,進去,再開啟base.log,入下圖


注:資料夾和日誌檔案的名稱,都是在配置檔案logback.xml中設定的

通過這個例項,我們完全用過去的技術處理日誌,暫時不用去管別的,直接使曾經的技術。