springboot 整合logback

1.application.properties新增配置

server.port=8080

2.新增AppConfig.java 文件

package com.lb.springboot.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * 應用自定義配置
 * @author lb
 */
@Configuration
@ComponentScan(value = {"com.lb.springboot.**"})
@PropertySource("classpath:application-myconfig.properties")
public class AppConfig {
	
	private static final Logger LOGGER = LoggerFactory.getLogger(AppConfig.class);
 // 加載服務端口配置
	@Value("${server.port}")
	private String serverPort;
	
	public void outprint() {
		LOGGER.info("logback - 加載配置 - serverPort: {}",serverPort);
	}
}

3. 修改 Application.java

替換main方法的內容爲:

ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
		// 測試Logback打印配置
		AppConfig appConfig = ctx.getBean(AppConfig.class);
		appConfig.outprint();

4. 新增logback.xml文件

  • 需要將logback.xml放入項目的 /src/main/resources/目錄下

內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	scan: 當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true 
	scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。
	debug: 當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。
-->
<configuration scan="true" scanPeriod="30 seconds" debug="false" >
	<!-- 每個logger都關聯到logger上下文,默認上下文名稱爲default。但可以使用<contextName>設置成其他名字,用於區分不同應用程序的記錄。一旦設置,不能修改。 -->
	<contextName>springboot-quickstart-002</contextName>
	<!-- 通過<property>定義的值會被插入到logger上下文中。定義變量後,可以使"${}"來使用變量	 -->
	<property name="logback.path" value="/Users/yunnasheng/Desktop/logs" />
	<property name="logback.level" value="INFO" />
	<property name="logback.additivity" value="true" />
	<!--格式化輸出:%d表示日期,%t表示線程名,%-5p:級別從左顯示5個字符寬度   %m:日誌消息,%n是換行符--> 
	<property name="logback.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n" />	
	<!-- %d [%t] %-5p %c.%M[%L] - %m%n -->
	<!-- %d{yyyy-MM-dd HH:mm:ss} [%thread]  %-5level %logger{50} - %msg%n -->	

	<!-- 
		<appender>是<configuration>的子節點,是負責寫日誌的組件 
		<appender>有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名。
		ConsoleAppender:把日誌添加到控制檯,有以下子節點:
		<encoder>:對日誌進行格式化。
		<target>:字符串  System.out 或者 System.err	默認 System.out	
	-->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
			<charset>UTF-8</charset>
    		<layout class="ch.qos.logback.classic.PatternLayout">
      			<pattern>${logback.pattern}</pattern>
    		</layout>
  		</encoder>
	</appender>

	<!-- 
		FileAppender:把日誌添加到文件,有以下子節點
 		<file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。
		<append>:如果是 true,日誌被追加到文件結尾,如果是 false,清空現存文件,默認是true。
		<encoder>:對記錄事件進行格式化。
		<prudent>:如果是 true,日誌會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認是 false。	
	 -->	
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日誌文件輸出的文件名-->
			<FileNamePattern>${logback.path}/springboot-quickstart-002.%d{yyyy-MM-dd}.log</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    		<charset>UTF-8</charset>
    		<layout class="ch.qos.logback.classic.PatternLayout">
      			<pattern>${logback.pattern}</pattern>
    		</layout>
  		</encoder>
	</appender>
	
	<appender name ="ANSY_FILE" class= "ch.qos.logback.classic.AsyncAppender">
		<!-- 不丟失日誌.默認的,如果隊列的80%已滿,則會丟棄TRACT、DEBUG、INFO級別的日誌 --> 
		<discardingThreshold >0</discardingThreshold>
		<!-- 更改默認的隊列的深度,該值會影響性能.默認值爲256 --> 
		<queueSize>256</queueSize>
		<appender-ref ref ="FILE"/>
	</appender>
	
	<logger name="org.springframework" level="INFO"/>
    <logger name="org.apache" level="ERROR"/>
    <logger name="java.sql" level="ERROR"/> 
       
    <!-- 
    	<root> 也是<loger>元素,但是它是根loger。只有一個level屬性,應爲已經被命名爲"root" 
    	level: 用來設置打印級別,大小寫無關:TRACE < DEBUG < INFO < WARN < ERROR, ALL 和 OFF,不能設置爲INHERITED或者同義詞NULL。 默認是DEBUG
    	<loger>和<root>可以包含零個或多個<appender-ref>元素,標識這個引用的appender將會被添加到這個loger中。
    -->
	<root level="${logback.level}">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="ANSY_FILE" />
	</root>
</configuration>

5. 啓動測試

控制檯打印如下,關鍵日誌 logback - 加載配置 - serverPort: 8080


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.7.RELEASE)

2020-12-14 18:43:23 [main] INFO  - Starting Application on yunnashengdeMacBook-Pro.local with PID 26117 (/Users/yunnasheng/work/github-workspace/springboot-quickstart-002/target/classes started by yunnasheng in /Users/yunnasheng/work/github-workspace/springboot-quickstart-002)
2020-12-14 18:43:23 [main] INFO  - No active profile set, falling back to default profiles: default
2020-12-14 18:43:24 [main] INFO  - Tomcat initialized with port(s): 8080 (http)
2020-12-14 18:43:24 [main] INFO  - Root WebApplicationContext: initialization completed in 557 ms
2020-12-14 18:43:24 [main] INFO  - Initializing ExecutorService 'applicationTaskExecutor'
2020-12-14 18:43:24 [main] INFO  - Tomcat started on port(s): 8080 (http) with context path ''
2020-12-14 18:43:24 [main] INFO  - Started Application in 1.027 seconds (JVM running for 1.555)
2020-12-14 18:43:24 [main] INFO  - logback - 加載配置 - serverPort: 8080
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章