Log4J日志文件的详细配置
来源:互联网 发布:中端单反推荐 知乎 编辑:程序博客网 时间:2024/05/16 06:48
在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。
最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通 过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。
Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。
通常,我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告 诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。
Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。
Properties格式
lg4j.properties 文件作为作为常用的配置文件的方法如下:
先来看一个例子:
log4j.rootLogger=INFO, A1# A1 is set to be a ConsoleAppender.log4j.appender.A1=org.apache.log4j.ConsoleAppender# A1 uses PatternLayout.log4j.appender.A1.layout=org.apache.log4j.PatternLayout#log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%nlog4j.appender.A1.layout.ConversionPattern=%-5p %c %m%nlog4j.logger.org.apache=ERROR
1)log4j.rootLogger=INFO, A1
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
2)log4j.appender.A1=org.apache.log4j.ConsoleAppender
配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
其中, Log4j 提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender (控制台),
org.apache.log4j.FileAppender (文件),
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
例如:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为 stdout 的输出目的地, ConsoleAppender 为控制台。
3)log4j.appender.A1.layout=org.apache.log4j.PatternLayout
其中, Log4j 提供的 layout 有以下几种:
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
log4j.appender.A1.layout.ConversionPattern=%-5p %c %m%n
格式化日志信息
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
再来看一个示例文件:
log4j.rootCategory=INFO, stdout,file ###. 定义名为 stdout 的输出端的类型 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n ###. 定义名为 file 的输出端的类型为每天产生一个日志文件。 log4j.appender.file =org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=log.txt log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n ###. 指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。 log4j.logger.com.neusoft=DEBUG ###. 如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。 log4j.logger.com.opensymphony.oscache=ERROR log4j.logger.net.sf.navigator=ERROR ### struts 配置 log4j.logger.org.apache.commons=ERROR log4j.logger.org.apache.struts=WARN ###也可以统一写成如下,当然了,如果想细分的话,当然上面比较好点#log4j.logger.org.apache=ERROR### displaytag 配置 log4j.logger.org.displaytag=ERROR ### .spring 配置 log4j.logger.org.springframework=DEBUG ### . ibatis 配置 log4j.logger.com.ibatis.db=WARN ### . hibernate 配置 log4j.logger.org.hibernate=DEBUG
其他:
1.ConsoleAppender选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
2.FileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
3.DailyRollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
1)'.'yyyy-MM: 每月
2)'.'yyyy-ww: 每周
3)'.'yyyy-MM-dd: 每天
4)'.'yyyy-MM-dd-a: 每天两次
5)'.'yyyy-MM-dd-HH: 每小时
6)'.'yyyy-MM-dd-HH-mm: 每分钟
4.RollingFileAppender 选项
Threshold=WARN:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
XML格式的配置
<?xml version="1.0" encoding="GB2312" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><!-- 设置通道 ID:org.zblog.all 和输出方式: org.apache.log4j.RollingFileAppender --><appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender"><!-- 设置 File 参数:日志输出文件名 --><param name="File" value="all.output.log" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="false" /><!-- 设置文件大小 --><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><!-- 设置输出文件项目和格式 --><param name="ConversionPattern" value="%p (%c:%L)- %m%n" /></layout></appender><appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender"><param name="File" value="output.log" /><param name="Append" value="true" /><param name="MaxFileSize" value="10240" /><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%p (%c:%L)- %m%n" /></layout></appender><!-- 设置域名限制,即 zcw.log 域及以下的日志均输出到下面对应的通道中 --><logger name="zcw.log"><!-- 设置级别 --><level value="debug" /><!-- 与前面的通道 id 相对应 --><appender-ref ref="org.zblog.zcw" /></logger><root><!-- 与前面的通道 id 相对应 --><appender-ref ref="org.zblog.all" /></root></log4j:configuration>
Doc 文档可以从其网站上下载:
http://logging.apache.org/log4j/docs/api/index.html
http://logging.apache.org/log4j/docs/documentation.html
关于 eclipse 的 log4j的插件log4e 可以去他的官方网站上下载:http://log4e.jayefem.de/index.php/Download
转载地址:http://beijishiqidu.iteye.com/blog/1943457
- Log4J日志文件的详细配置
- log4j的properties详细配置,分级输出日志文件
- Log4j 的日志配置(超详细)
- log4j日志的配置详细说明
- Log4j日志文件配置
- Log4J日志文件配置
- log4j日志文件配置
- Log4j日志文件配置
- log4j 日志文件配置
- Log4j日志文件配置
- log4j日志文件配置
- Log4j日志文件配置
- log4j 日志文件配置
- 配置log4j日志文件
- log4j文件的配置的详细介绍
- log4j文件的配置的详细介绍
- log4j文件的配置的详细介绍
- struts日志文件的配置log4j
- qml 画的问题
- 警告:隐式声明与内建函数'exit'不兼容解决方案
- Matlab中下标、斜体及希腊字母的使用方法
- 第四周作业--1图的表示,2无向图的DFS算法,3有向图找环;
- LINQ TO SQL 实现无限递归查询
- Log4J日志文件的详细配置
- Sum Root to Leaf Numbers -- LeetCode
- ActionContext. ServletActionContext.getRequest().getSession();区别
- Linux内核源代码分析——fork()原理&多进程网络模型
- POJ 1061 && POJ 2142 两道扩展欧几里得简单题
- MongoDB学习
- 28岁大龄女嫁46岁剩男 婆婆:住我家就得交房租
- orace10g手动创建数据库
- 硬盘数据恢复过程记录(断断续续更新中……)