亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Spring MVC 日志配置

1. 前言

本章節將和大家一起聊聊在 Spring MVC 項目中如何添加日志系統。通過本課程,你將了解到:

  • 添加 log4j 日志子系統的流程。這個是本章節的重點;
  • log4j 日志系統的相關配置。

2. log4j 日志框架

企業級的項目都會標配日志子系統。日志系統可以記錄項目運行過程的所有信息,通過這些信息可以很方便幫助開發人員找到項目運行過程的問題。

日志系統也可以記載用戶的使用記錄,這些信息可以幫助開發者分類、歸納用戶的使用入口,更好的維護系統的安全性。除此之外,日志信息還有更多其它用途。

眾多流行、優秀的日志框架中,本課程主推 log4j。log4j 日志系統有兩個版本,使用時有很大差異性?;?Spring 5.X 版本的項目中建議使用 log4j 2 版本。

2.1 添加日志框架

本小節主要介紹在 Spring MVC 項目中如何集成 log4j 2 日志系統。

  1. 打開項目的 pom.xml 文件,添加 log4j 的依賴包;
<dependency>
   	<groupId>org.apache.logging.log4j</groupId>
   	<artifactId>log4j-core</artifactId>
   	<version>2.10.0</version>
</dependency>
<dependency>
   	<groupId>org.apache.logging.log4j</groupId>
   	<artifactId>log4j-api</artifactId>
   	<version>2.10.0</version>
</dependency>
<dependency>
   	<groupId>org.apache.logging.log4j</groupId>
   	<artifactId>log4j-web</artifactId>
   	<version>2.10.0</version>
</dependency>

Tips: 這里有 3 個依賴包,log4j-web 是針對于 WEB 應用程序的依賴包。

  1. 新建名為 log4j2.xml 的配置文件;

Tips: log4j2 不再支持 properties 格式的文件,只支持 xml,json 或是 yaml,不指定位置的情況下默認在 src/main/resources 下查找。

提供如下最基礎的配置內容:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout
				pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
		</Console>
		<RollingRandomAccessFile name="smlog"
			fileName="sm.log"
			filePattern="$${date:yyyy-MM}/sm-%d{yyyy-MM-dd}-%i.log.gz">
			<PatternLayout
				pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
			<Policies>
				<TimeBasedTriggeringPolicy />
				<SizeBasedTriggeringPolicy size="10 MB" />
			</Policies>
			<DefaultRolloverStrategy max="20" />
		</RollingRandomAccessFile>
	</Appenders>
	<Loggers>
		<Logger name="org.springframework" level="DEBUG" />
		<Root level="info">
			<AppenderRef ref="Console" />
			<AppenderRef ref="smlog" />
		</Root>
	</Loggers>
</Configuration>

log4j2 配置內容簡要說明:

  • Appender: 信息輸出位置,可以有多個輸出口。 SYSTEM_OUT 的目標是 Console 。表示把日志內容輸出到控制臺上。Root Logger 的級別是 info。所有 info 及以上級別的日志才會記錄;

Tips: 日志級別分別有 TRACE、 DEBUG 、NFO 、WARN 、ERROR 、 FATAL 這幾種,日志級別從左向右依次增加。日志信息的輸出由當前日志級別決定,只有比當前級別高的信息才能輸出。

  • RollingRandomAccessFile: 表示以文件方式記錄??梢栽O置日志文件的文件名以及格式,一般會加上時間戳;

Tips: 本文側重于講解在 Spring MVC 項目中如何使用 log4j 日志系統。log4j 其它的配置信息大家可以查閱官方文檔:

  • 如果希望日志信息既輸出到控制臺,又能輸出到文件中,務必使用 AppenderRef 標簽引用控制臺配置名稱和文件配置名稱。
<Root level="info">
	<AppenderRef ref="Console" />
	<AppenderRef ref="smlog" />
</Root>

log4j2 的配置文件開發者可以根據需要存放在其它位置,但需要在 web.xml 文件中配置 log4j 提供的監聽器。

<context-param>
	<param-name>log4jConfiguration</param-name>
	<param-value>classpath:log4j2.xml</param-value>
</context-param>
<listener>
	<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>

Tips: 最佳方案是把 log4j 的 log4j2.xml 配置文件放在默認位置,避開上面的配置。Servlet2.5 以上,可以不用配置監聽器。

  1. 使用測試。

使用很簡單,在你需要使用日志的地方,創建一個日志對象。

public class Test {
	static Logger logger = LogManager.getLogger(Test.class);
	public static void main(String[] args) {
          logger.info("info","messgae"); 
	}
}

運行上面代碼,除了在控制臺上輸出信息外,且還會把內容寫入到日志文件中。

圖片描述

日志對象的 i 常用方法如下:

  • debug():輸出 debug 級別信息;
  • error():輸出 error 級別的信息;
  • fatal():輸出 fatal 級別的信息;
  • info():輸出 info 級別的信息;
  • trace():輸出 trace 級別的信息;
  • warn():輸出 warn 級別的信息。

以上幾個方法除了語義上的區別,使用起來沒有本質的區別。通過語義上的差異性,log4j 可以控制信息的輸出級別。

3. 小結

本章節和大家一起聊了聊在 Spring MVC 項目如何使用 log4j 2 日志系統。log4j 是一個獨立的日志系統??梢栽谛枰峁┤罩镜捻椖恐幸阅K化的方式輕松使用。
log4j 有很多可配置項,大家可以參考官方文檔。對于本課程的配置而言,已經足夠常規要求。