spring boot(13)-logback和access日志


logback

logback出自log4j的作者,性能和功能相比log4j作出了一些改進,而配置方法和log4j類似,是spring boot的默認日志組件。在application.properties文件中可以進行一些簡單的日志配置,參考第五篇。如果要作一些更詳細的配置,需要在resources目錄下配置logback-spring.xml

logback-spring.xml

spring boot官方建議使用logback-spring.xml這個文件名來配置默認的logback日志。關於logback詳細知識可以查官方文檔,這里提供一個比較實用的配置:在控制台輸出INFO級別日志,另外將warn警告日志和error錯誤日志分別保存到不同目錄文件,具體看注釋
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- appender是配置輸出終端,ConsoleAppender是控制台,name是自定義名 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<!-- 配置日志格式,這是一個比較通用的格式 -->
			<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
		</encoder>
	</appender>
	
	<!-- 輸出終端是滾動文件 -->
	<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 基於時間滾動,就是每天的日志輸出到不同的文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 輸出日志的目錄文件名,window中默認分區為當前程序的硬盤分區,%d{yyyy-MM-dd}是當前日期 -->
			<fileNamePattern>/log/warn/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 最大保存99個文件,超出的歷史文件會被刪除 -->
			<maxHistory>99</maxHistory>
		</rollingPolicy>
		<!-- 按照日志級別進行過濾 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<!-- 只收集WARN級別的日志,其他高級別和低級別的日志都放棄 -->
			<level>WARN</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
		</encoder>
	</appender>
	
	<!-- 除了filter,其他 配置和上面一樣, 只是name和文件路徑不同-->
	<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>/log/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>99</maxHistory>
		</rollingPolicy>
		<!-- 閾值過濾器 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<!-- 收集ERROR及ERROR以上級別的日志 -->
			<level>ERROR</level>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
		</encoder>
	</appender>
	
	<!-- root是根日志打印器,只有一個,負責整個系統的日志輸出  -->
	<root level="INFO">
		<!-- 將上面三個輸出終端配置到根打印器,將對整個系統 生效。 -->
		<appender-ref ref="STDOUT" />
		<appender-ref ref="WARN" />
		<appender-ref ref="ERROR" />
	</root>

	<!-- logger是root的子打印器,可以有多個,輸出name配置的包中的日志。 -->
	<!-- hello.dao是我的mybatis映射dao的包名,設置為debug可以打印mybatis的sql語句 -->
	<logger name="hello.dao" level="DEBUG" />
</configuration>  

運行后結果是這樣的,E盤是我的程序當前分區,會自動生成log目錄如下,會分別保存error和warn級別的日志

level日志級別

在上面配置中的leven參數,主要使用了四種,,級別從低到高分別為debug,info,warn,error,當設置某一級別日志時,比他低級的日志不會輸出。 

debug:調試,從名字可以看出其作用。程序中報錯無法解決時,使用調試來查看更多錯誤信息。在mybatis中使用這種日志才會輸出sql語句。  debug的輸出量太大,而且不懂源碼的人很多都看不懂,還有很多沒什么實際作用的日志信息刷屏,只適合報異常程序的調試。

info:信息,信息量比debug少很多,只會輸出一些重要的信息,適合開發時使用。

warn:警告,通常是可以修復的,不修復也不一定會引發異常,有時候是一些提示信息,但是比info信息更加重要

error:錯誤,很明顯,就是程序異常

access訪問日志

tomcat中默認是有access訪問日志的,用於記錄訪問者的IP,不過在spring boot中這個日志默認是關閉的。如果你的服務器結構中有nginx類的http服務器,access日志應該是在nginx中配置的。而tomcat這樣的后台服務器只需要記錄后台日志,不需要管access日志。如果想在spring boot中打開access日志,可以在application.properties中配置

#配置tomcat工作目錄,為當前分區的tomcat目錄
server.tomcat.basedir=/tomcat
#開啟accesslog,會記錄到上面的目錄下
server.tomcat.accesslog.enabled=true


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM