log4j日志文件模板配置整理

模板一

以xml文件配置,按照不同的日志级别输出到不同的文件中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
	</appender>

	<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/data/eclog/ec-debug.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="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="DEBUG" />
		</filter>
	</appender>

	<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/data/eclog/ec-info.log" />
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="500KB" />
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="INFO" />
		</filter>
	</appender>

	<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/data/eclog/ec-warn.log" />
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="500KB" />
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>

	<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/data/eclog/ec-error.log" />
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="500KB" />
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>
	<!-- 1. 指定logger的设置,additivity是否遵循缺省的继承机制 2. 当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制 
		3. 代码中使用Logger.getLogger("logDiy")获得此输出器,且不会使用根输出器 -->
	<logger name="logDiy" additivity="false">
		<level value="INFO" />
		<appender-ref ref="INFO" />
	</logger>
	<root>
		<priority value="debug" />
		<appender-ref ref="STDOUT" />
		<appender-ref ref="DEBUG" />
		<appender-ref ref="INFO" />
		<appender-ref ref="WARN" />
		<appender-ref ref="ERROR" />
	</root>
</log4j:configuration>

模板二

以xml文件配置,通用模板

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- 日志输出到控制台 -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<!-- 日志输出格式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
		<!--过滤器设置输出的级别 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<!-- 设置日志输出的最小级别 -->
			<param name="levelMin" value="INFO" />
			<!-- 设置日志输出的最大级别 -->
			<param name="levelMax" value="ERROR" />
		</filter>
	</appender>
	<!-- 输出日志到文件 -->
	<appender name="fileAppender" class="org.apache.log4j.FileAppender">
		<!-- 输出文件全路径名 -->
		<param name="File" value="/data/applogs/own/fileAppender.log" />
		<!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件 -->
		<param name="Append" value="false" />
		<param name="Threshold" value="INFO" />
		<!--是否启用缓存,默认false -->
		<param name="BufferedIO" value="false" />
		<!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K -->
		<param name="BufferSize" value="512" />
		<!-- 日志输出格式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
	</appender>
	<!-- 输出日志到文件,当文件大小达到一定阈值时,自动备份 -->
	<!-- FileAppender子类 -->
	<appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
		<!-- 日志文件全路径名 -->
		<param name="File" value="/data/applogs/RollingFileAppender.log" />
		<!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件 -->
		<param name="Append" value="true" />
		<!-- 保存备份日志的最大个数,默认值是:1 -->
		<param name="MaxBackupIndex" value="10" />
		<!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB,默认值是:10MB -->
		<param name="MaxFileSize" value="10KB" />
		<!-- 设置日志输出的样式 -->
		`
		<layout class="org.apache.log4j.PatternLayout">
			<!-- 日志输出格式 -->
			<param name="ConversionPattern"
				value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
		</layout>
	</appender>

	<!-- 日志输出到文件,可以配置多久产生一个新的日志信息文件 -->
	<appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
		<!-- 文件文件全路径名 -->
		<param name="File" value="/data/applogs/own/dailyRollingAppender.log" />
		<param name="Append" value="true" />
		<!-- 设置日志备份频率,默认:为每天一个日志文件 -->
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<!--每分钟一个备份 -->
		<!--<param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" /> -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n" />
		</layout>
	</appender>
	<!-- 1. 指定logger的设置,additivity是否遵循缺省的继承机制 2. 当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制 
		3. 代码中使用Logger.getLogger("logDiy")获得此输出器,且不会使用根输出器 -->
	<logger name="logDiy" additivity="false">
		<level value="INFO" />
		<appender-ref ref="dailyRollingAppender" />
	</logger>

	<!-- 根logger的设置,若代码中未找到指定的logger,则会根据继承机制,使用根logger -->
	<root>
		<appender-ref ref="console" />
		<appender-ref ref="fileAppender" />
		<appender-ref ref="rollingAppender" />
		<appender-ref ref="dailyRollingAppender" />
	</root>
</log4j:configuration>

模板三

以properties文件配置

#debug < info < warn < error
log4j.rootLogger=${logger.rootlogger}

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%-5d [%-4p] [%r] [%t] [%l] - %m%n

# root info
log4j.appender.Infofile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Infofile.file=${catalina.home}/logs/ec.log
log4j.appender.Infofile.DatePattern='.'yyyy-MM-dd
log4j.appender.Infofile.layout=org.apache.log4j.PatternLayout
log4j.appender.Infofile.layout.ConversionPattern=%-5d [%-4p] [%r] [%t] [%l] - %m%n

# error
log4j.appender.Errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Errorfile.file=${catalina.home}/logs/error.log
log4j.appender.Errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.Errorfile.Threshold = ERROR
log4j.appender.Errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.Errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# 输出liveness日志
log4j.logger.liveness = INFO, liveness
# 是否在父log中输出日志
log4j.additivity.liveness = false
# 每天生产日志文件
log4j.appender.liveness = org.apache.log4j.DailyRollingFileAppender
# 生成日志到单独的文件
log4j.appender.liveness.File =${catalina.home}/logs/liveness.log
# 追加日志
log4j.appender.liveness.Append = true
# 日志级别
log4j.appender.liveness.Threshold = INFO
log4j.appender.liveness.layout = org.apache.log4j.PatternLayout
# 日志格式
log4j.appender.liveness.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

log4j配置参数介绍

  1. 控制台参数介绍
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
  1. 日志信息格式中几个符号所代表的含义:
-X号: X信息输出时左对齐;
 %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
 %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
 %r: 输出自应用启动到输出该log信息耗费的毫秒数
 %c: 输出日志信息所属的类目,通常就是所在类的全名
 %t: 输出产生该日志事件的线程名
 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
 %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
 %%: 输出一个"%"字符
 %F: 输出日志消息产生时所在的文件名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信息
 %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行

备注

以上信息都为网上收集整理,只供学习使用,参考了部分作者文章
log4j.properties 详解与配置步骤

发布了9 篇原创文章 · 获赞 6 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览