log4j.xml配置

本文详细介绍了Log4j的日志配置方法,包括log4j.properties和log4j.xml两种配置文件的使用,以及如何通过appender节点指定日志输出目标如控制台或文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

log4j的支持两种类型的配置文件log4j.properties和log4j.xml。 

且当两个文件都存在时, 优先加载log4j.xml文件,即使log4j.properties文件在classes下,log4j.xml在jar包中

xml格式比properties的功能更为强大些。 例如, 可以通过filter指定日志打印的级别, 详见以下输出到控制台的配置

log4j推荐使用的4个级别的日志:error>warn>info>debug 

特别提醒:

a. 以下提到的通道即appender节点
b. 在appender节点中的子节点需要按照以下顺序罗列,否则会提示错误: errorHandler?,param*,layout?,filter*,appender-ref*
c. 一定要包含root节点, 否则会打印红色日志, 要求初始化log4j日志系统
d. 通道要在root中引用才有效

1. 基本元素:

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名. eg: com.foundersc.log.Demo1
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志打印时间,可以指定时间格式, 
    eg:
        %d{yyy MMM dd HH:mm:ss}: 2017 六月 03 14:38:35
        %d{yyy MM dd HH:mm:ss}: 2017 06 03 14:44:58
%l 输出日志事件的发生位置,包括方法全限定名、在代码中的行数。eg:com.foundersc.log.Demo1.info(Demo1.java:15)%m 输出日志内容

2. 日志输出目的地及其输出方式, 如:控制台, 文件

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件) 
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

3. 常用的节点标签:

<!-- name:相当于id, 该日志通道的唯一标识, class:该通道使用的日志输出方式 --> 
<appender name="" class=""></appender>
<!-- 暂不介绍 -->
<logger name="" additivity="false"></logger>
<!-- 暂不介绍 -->
<category name="" additivity="false"></category>

4.日志输出到控制台

	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<param name="Encoding" value="UTF-8"/>
		<!-- 打印日志的样式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyy MM dd HH:mm:ss} %t %c %l %n" />
		</layout>
		<!--滤镜设置输出的级别范围-->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<!-- 输出的最低级别日志 -->
			<param name="levelMin" value="debug" />
			<!-- 输出的最高级别日志 -->
			<param name="levelMax" value="info" />
		</filter>
	</appender>


5. 日志输出到指定文件:

	<appender name="file" class="org.apache.log4j.RollingFileAppender">
	
	    <param name="Encoding" value="UTF-8"/>
		<!-- 指定日志输出文件,如果不是绝对路径,则以项目的根目录为当前目录 -->
		<param name="file" value="E:/java/eclipse_logs/file.log" />
		<!-- 重启服务时是否覆盖原有文件内容。 true:在原有日志的基础上追加内容, false:新日志覆盖原有的日志 -->
		<param name="append" value="false" />
		<!-- MaxBackupIndex:查询资料解释为日志备份的数量, 暂时还未发现实际的作用 -->
		<param name="MaxBackupIndex" value="10" />
		<!-- 打印日志的格式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
		</layout>
	</appender>


6. 不同级别的日志输出到不同的文件中: 主要是用filter使最大级别和最小级别一样,并指定日志文件

	<appender name="info-file" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="info.log" />
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="500KB" />
		<param name="MaxBackupIndex" value="2" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyy MM dd HH:mm:ss} %t %c %l %n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMax" value="INFO" />
			<param name="LevelMin" value="INFO" />
		</filter>
	</appender>


7. 在root中引用要使用的日志通道, 否则日志系统无效, 且会打印日志要求初始化log4j系统

<root>
    <level value="debug"/>
    <appender-ref ref="console" />
</root>


8. log4j.xml 命名空间及其根

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

</log4j:configuration>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值