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