springboot:slf4j+logback日誌記錄

簡介

  • log4j是apache實現的一個開源日誌組件
  • logback同樣是由log4j的作者設計完成的,擁有更好的特性,用來取代log4j的一個日誌框架,是slf4j的原生實現
  • Log4j2是log4j 1.x和logback的改進版,據說採用了一些新技術(無鎖異步、等等),使得日誌的吞吐量、性能比log4j 1.x提高10倍,並解決了一些死鎖的bug,而且配置更加簡單靈活
  • slf4j是對所有日誌框架制定的一種規範、標準、接口,並不是一個框架的具體的實現,因爲接口並不能獨立使用,需要和具體的日誌框架實現配合使用(如log4j、logback),使用接口的好處是當項目需要更換日誌框架的時候,只需要更換jar和配置,不需要更改相關java代碼

一.  新增要使用的依賴

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

國外的服務器下載速度感人,一般都是用公司內部地址或切換到國內。 修改maven安裝目錄下中的conf文件夾下的setting.xml文件內容,在<mirrors>節點下新增

<mirror>
  <id>alimaven</id> 
  <name>aliyun maven</name> 
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
  <mirrorOf>central</mirrorOf> 
</mirror>

application.properties中添加配置 logging.config=classpath:log4j2_dev.xml,

log4j2默認會在classpath目錄下尋找log4j2.xml、log4j.json、log4j.jsn等名稱的文件,如果都沒有找到,則會按默認配置輸出,也就是輸出到控制檯,也可以對配置文件自定義位置 

<?xml version="1.0" encoding="UTF-8"?>
<!--spirng boot 默認使用logback,默認會讀取resources文件夾下的名爲logback.xml的文件 -->
<configuration debug="true">
	<!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->
	<property name="LOG_HOME" value="./logs" />
	<!-- 控制檯輸出 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg  %n</pattern>
		</encoder>
	</appender>
	<!--按照每天生成日誌文件 -->
	<appender name="DEBUG"  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/order/debug/debug.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--	日誌文件輸出的文件名-->
			<FileNamePattern>${LOG_HOME}/order/debug/debug.log.%d{yyyy-MM-dd}_%i</FileNamePattern>
			<!--	日誌文件保留天數-->
			<MaxHistory>7</MaxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<MaxFileSize>1024MB</MaxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>


	<appender name="ERROR"  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/order/error/error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日誌文件輸出的文件名-->
			<FileNamePattern>${LOG_HOME}/order/error/error.log.%d{yyyy-MM-dd}_%i</FileNamePattern>
			<!--日誌文件保留天數-->
			<MaxHistory>15</MaxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<MaxFileSize>1024MB</MaxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<appender name="INFO"  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/order/info/info.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日誌文件輸出的文件名-->
			<FileNamePattern>${LOG_HOME}/order/info/info.log.%d{yyyy-MM-dd}_%i</FileNamePattern>
			<!--日誌文件保留天數-->
			<MaxHistory>7</MaxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<MaxFileSize>1024MB</MaxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>


	<appender name="WARN"  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/order/warn/warn.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日誌文件輸出的文件名-->
			<FileNamePattern>${LOG_HOME}/order/warn/warn.log.%d{yyyy-MM-dd}_%i</FileNamePattern>
			<!--日誌文件保留天數-->
			<MaxHistory>7</MaxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<MaxFileSize>1024MB</MaxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>WARN</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<!-- 日誌輸出級別 -->
	<root level="DEBUG">
		<appender-ref ref="DEBUG" />
		<appender-ref ref="ERROR" />
		<appender-ref ref="STDOUT" />
		<appender-ref ref="INFO" />
		<appender-ref ref="WARN" />
	</root>
</configuration>

3. 使用方式

或者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章