Java配置和使用log4j日志


在日常開發中,我們經常需要用到日志來查看程序的運行情況,以便更好的把控項目。本文將介紹Java項目如何配置和使用log4j日志,包括:“使用Maven在pom.xml導入log4j的jar包”、“在resource目錄下新建log4j.xml文件”、“log4j文件頭信息”、“配置debug日志輸出到文件”、“配置INFO日志輸出到文件”、“輸出ERROR日志到文件”、“配置日志異步化AsyncAppender”、“配置控制台輸出”、“配置發送郵件”。

1、使用Maven在pom.xml導入log4j的jar包。

		<!-- 日志文件管理包 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

2、在resource目錄下新建log4j.xml文件。

在resource目錄下新建log4j.xml文件

3、log4j文件頭信息。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

4、配置debug日志輸出到文件。

輸出到指定目錄,每天產生一個日志文件DailyRollingFileAppender:

<!-- 輸出DEBUG日志到文件 -->
	<appender name="log4jLogDebug" class="org.apache.log4j.DailyRollingFileAppender">
		<!-- 輸出的文件位置 -->
		<param name="file" value="D:/NBR_Log/DEBUG.log" />
		<!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 -->
		<param name="append" value="true" />
		<!-- 設置文件大小 -->
		<!-- <param name="MaxFileSize" value="1MB" /> -->
		<!-- 設置文件備份個數,當log文件的大小超過上面文件設置的大小時,就會進行備份。當設置的文件備份個數用完后,它會自動覆蓋原有的log -->
		<!-- <param name="MaxBackupIndex" value="10" /> -->
		<!-- 設置輸出文件項目和格式 -->
		<layout class="org.apache.log4j.PatternLayout"> 
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t %5p %c{1}:%L:%m%n" />
		</layout>
		<!-- 過濾日志級別輸出到對應文件 如果不需要過濾,則將所有級別的日志輸出到一個文件中 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="DEBUG" />
			<param name="levelMax" value="DEBUG" />
		</filter>
	</appender>

5、配置INFO日志輸出到文件。

	<!-- 輸出INFO日志到文件 -->
	<appender name="log4jLogInfo" class="org.apache.log4j.DailyRollingFileAppender">
		<!-- 輸出的文件位置 -->
		<param name="file" value="D:/NBR_Log/INFO.log" />
<!-- 		<param name="DatePattern" value="_yyyy_MM_dd.log" /> -->
		<!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 -->
		<param name="append" value="true" />
		<!-- 設置文件大小 -->
		<!-- <param name="MaxFileSize" value="1MB" /> -->
		<!-- 設置文件備份個數,當log文件的大小超過上面文件設置的大小時,就會進行備份。當設置的文件備份個數用完后,它會自動覆蓋原有的log -->
		<!-- <param name="MaxBackupIndex" value="10" /> -->
		<!-- 設置輸出文件項目和格式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t %5p %c{1}:%L:%m%n" />
		</layout>
		<!-- 過濾日志級別輸出到對應文件 如果不需要過濾,則將所有級別的日志輸出到一個文件中 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="INFO" />
			<param name="levelMax" value="INFO" />
		</filter>
	</appender>

6、配置ERROR日志輸出到文件。

	<!-- 輸出ERROR日志到文件 -->
	<appender name="log4jLogError" class="org.apache.log4j.DailyRollingFileAppender">
		<!-- 輸出的文件位置 -->
		<param name="file" value="D:/NBR_Log/ERROR.log" />
		<!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 -->
		<param name="append" value="true" />
		<!-- 設置文件大小 -->
		<!-- <param name="MaxFileSize" value="1MB" /> -->
		<!-- 設置文件備份個數,當log文件的大小超過上面文件設置的大小時,就會進行備份。當設置的文件備份個數用完后,它會自動覆蓋原有的log -->
		<!-- <param name="MaxBackupIndex" value="10" /> -->
		<!-- 設置輸出文件項目和格式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t %5p %c{1}:%L:%m%n" />
		</layout>
		<!-- 過濾日志級別輸出到對應文件 如果不需要過濾,則將所有級別的日志輸出到一個文件中 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="ERROR" />
			<param name="levelMax" value="ERROR" />
		</filter>
	</appender>

7、配置日志異步化AsyncAppender。

輸出日志操作涉及到IO操作,是比較耗時的。配置日志異步化AsyncAppender,可以幫助我們提升打印日志的性能:

<appender name="log4jLogDebugAsync" class="org.apache.log4j.AsyncAppender">
		<param name="BufferSize" value="0" />
		<appender-ref ref="log4jLogDebug" />
	</appender>

	<appender name="log4jLogInfoAsync" class="org.apache.log4j.AsyncAppender">
		<param name="BufferSize" value="0" />
		<appender-ref ref="log4jLogInfo" />
	</appender>

	<appender name="log4jLogErrorAsync" class="org.apache.log4j.AsyncAppender">
		<param name="BufferSize" value="0" />
		<appender-ref ref="log4jLogError" />
	</appender>

	<appender name="SendEmailAsync" class="org.apache.log4j.AsyncAppender">
		<param name="BufferSize" value="0" />
		<appender-ref ref="MAIL" />
	</appender>

8、配置控制台輸出。

	<!-- 輸出到控制台 -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t %5p %c{1}:%L:%m%n" />
		</layout>
	</appender>

9、配置發送郵件。

有ERROR日志時,發送郵件提醒信息:

	<!-- 發郵件(只有ERROR時才會發送!) -->
	<appender name="MAIL" class="org.apache.log4j.net.SMTPAppender">
		<param name="threshold" value="ERROR" />
		<!-- 日志的錯誤級別 <param name="threshold" value="fatal"/> -->
		<!-- 緩存文件大小,日志達到數值時發送Email -->
<!-- 		<param name="BufferSize" value="0" />單位K -->
		<param name="From" value="xxx" />
		<param name="SMTPHost" value="smtp.bxit.vip" />
		<param name="Subject" value="SSL_NBR_ERROR_MESSAGE" />
		<param name="To" value="xxx" />
		<param name="SMTPPort" value="465" />
		<param name="SMTPUsername" value="xxx" />
		<param name="SMTPPassword" value="xxxxxx" />
		<param name="SMTPProtocol" value="smtps" />
		<param name="SMTPDebug" value="true" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t %5p %c{1}:%L:%m%n" />
		</layout>
	</appender>

 


免責聲明!

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



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