最近几天研究log4j,个人的一些总结
严重声明问题
对于减少jar包时候,myeclipse重新部署不管用,要删除工程后再添加工程,jar包才从服务器中删除了。
log4j的包和一些包产生了冲突,导致日志写入不了文件,花了3天的时间的才找到这个jar包,真够呛。com.ibm.ws.webservices.thinclient_6.1.0.jar
log4j.logger可以指定特定包或者类的日志级别,并且可以指定日志输出的位子
例如:
log4j.logger.com.product.test=ERROR,R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.additivity.com.product.test=false 默认为true
表示com.product.test包下的所有程序日志不记录在root目录下
log4j的配置
一.参数意义说明
输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
配置日志信息输出目的地
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
控制台选项
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
日志信息格式中几个符号所代表的含义:
-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"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。
二.文件配置Sample1
log4j.rootLogger=DEBUG,A1,R
#log4j.rootLogger=INFO,A1,R
# ConsoleAppender 输出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
# File 输出 一天一个文件,输出路径可以定制,一般在根路径下
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=blog_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
文件配置Sample2
下面给出的Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。
log4j.rootLogger=DEBUG,CONSOLE,A1,im
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
log4j.addivity.org.apache=true
其他的高级应用参照http://blog.csdn.net/azheng270/article/details/2173430
或者http://www.blogjava.net/zJun/archive/2006/06/28/55511.html
严重声明问题
对于减少jar包时候,myeclipse重新部署不管用,要删除工程后再添加工程,jar包才从服务器中删除了。
log4j的包和一些包产生了冲突,导致日志写入不了文件,花了3天的时间的才找到这个jar包,真够呛。com.ibm.ws.webservices.thinclient_6.1.0.jar
log4j.logger可以指定特定包或者类的日志级别,并且可以指定日志输出的位子
例如:
log4j.logger.com.product.test=ERROR,R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.additivity.com.product.test=false 默认为true
表示com.product.test包下的所有程序日志不记录在root目录下
log4j的配置
一.参数意义说明
输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
配置日志信息输出目的地
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
控制台选项
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
日志信息格式中几个符号所代表的含义:
-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"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。
二.文件配置Sample1
log4j.rootLogger=DEBUG,A1,R
#log4j.rootLogger=INFO,A1,R
# ConsoleAppender 输出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
# File 输出 一天一个文件,输出路径可以定制,一般在根路径下
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=blog_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
文件配置Sample2
下面给出的Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。
log4j.rootLogger=DEBUG,CONSOLE,A1,im
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
log4j.addivity.org.apache=true
其他的高级应用参照http://blog.csdn.net/azheng270/article/details/2173430
或者http://www.blogjava.net/zJun/archive/2006/06/28/55511.html
发表评论
-
img usemap属性 中国地图链接
2012-08-24 16:28 1301html的img标签:定义一个图像在网页中引入。它还有个use ... -
在js上获得cookie中指定的值
2012-08-02 10:56 790获得cookie中的"loginName" ... -
在servlet和filter中获取Spring上下文
2012-07-18 11:32 2570在servlet中 方法一:在spring上下文加载到内存后直 ... -
js作用域链的问题
2012-06-03 22:01 1128var name = "The Window&quo ... -
oracle10g导入导出命令
2011-08-09 16:50 878exp和imp一定要加$符号! -
oracle10g安装问题
2011-08-08 18:47 1121版本10g,安装是报错:ora-12638 身份证明检索失败, ... -
浏览器缓存
2011-07-18 17:16 799大家在系统开发中都可能会在js中用到ajax或者dwr,因为I ... -
文档类型 <!DOCTYPE HTML>
2011-07-15 11:00 927写html的时候需要定义文档类型,如果不定义,浏览器在渲染 ... -
获得一个节点对象的节点类型
2011-06-30 18:16 860html:<div id="aa"& ... -
JSTL 只有c:if 而没有 c:else
2011-06-10 14:00 12630在jsp中 我们可以在 《% %》中写if(){}else{} ... -
JSTL fmt数字日期格式化
2011-05-13 16:07 15079<%@ taglib uri="http:// ... -
el fn函数收藏
2011-05-12 11:28 1143可以截取,用fn函数: <%@ taglib pre ... -
多线程Java Socket编程示例
2011-03-30 14:53 875http://www.blogjava.net/sternin ... -
struts2 type="chain"时result的参数
2011-03-28 15:27 1733Type=“chain”时 result标签的参数可以有下面4 ... -
在eclipse中修改注释模板和myeclipse6.0下art+/不能用的解决办法
2011-03-09 15:45 1116注释模板设置 eclipse-->Window--> ... -
struts2学习笔记之转换器实现语言切换
2011-02-26 11:38 1215第一步,在工程src目录下新建属性文件struts.prope ... -
castor学习笔记
2011-02-21 16:02 2130castor是一个可以把java对象和XML进行相互转换的工具 ... -
获得字符串的拼音头和全拼的写法
2011-02-14 10:20 2055public class SpellCache impleme ... -
查找出clazz的声明属性以及父类的声明属性
2010-07-08 15:33 940private List _getFields(Class c ... -
关于自定义标签rtexprvalue属性
2010-07-02 11:56 1199自定义标签时,在<attribute>标签里指定& ...
相关推荐
通过以上步骤,我们可以在Java应用中优雅地结合Commons Logging与Log4j,充分利用两者的优势,构建灵活且功能强大的日志系统。这种组合方式不仅简化了日志配置,还提高了应用的可维护性和可扩展性,是企业级Java应用...
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制来记录应用的运行情况,这对于调试、性能分析、问题追踪以及系统监控至关重要。这篇学习...
总结来说,Log4j提供了一套强大的日志管理框架,通过自定义Appender和PrintStream,我们可以轻松地将`System.out.println()`的输出整合到Log4j中,从而实现日志的集中管理和分析。这对于大型项目或者需要严格监控的...
### Log4j 学习笔记知识点详解 #### 一、Log4j 概述与架构 **Log4j** 是 **Apache** 组织提供的一个开源日志框架,旨在简化应用开发中的日志记录工作。它能够灵活地记录程序运行时的信息,并允许用户自定义日志的...
总结来说,Log4j-1.2.9是一个重要的日志工具,它提供了灵活的日志记录机制,便于调试、监控和问题排查。通过学习和实践提供的实例,开发者可以更好地掌握其用法,提高项目的可维护性和可追溯性。不过,随着技术的...
### Log4J 最简入门详解 #### 一、Log4J简介与基本概念 Log4J是一款非常流行的Java日志框架,由Apache...通过学习这些基础内容,开发者可以轻松地在自己的项目中集成Log4J,从而更好地管理和调试应用程序的日志信息。
Log4j是一款广泛应用于Java平台的日志记录框架,它提供了灵活且强大的日志记录功能,使得开发者能够方便地控制日志信息的输出级别、格式以及目的地。本实例将深入探讨Log4j的基本使用方法和配置。 一、Log4j的核心...
### log4J学习笔记 #### 一、Apache Commons Logging与log4j及JDK Logger的关系 **Apache Commons Logging** 的设计初衷是为了提供一个简洁统一的日志接口,它并不直接实现日志功能,而是通过桥接的方式支持多种...
总结来说,Apache Log4j 2.3 和 Commons Logging 1.2 在Java Web开发中扮演着重要角色,它们帮助开发者方便地记录、管理和分析应用程序的日志,提升开发效率和问题排查能力。这两个库的结合使用,能够实现日志系统的...
总结,Log4j是Java开发中的必备工具,通过合理的配置和使用,可以帮助我们更好地监控和调试应用程序。在"log4j日志打印demo"中,你将学习到如何设置Log4j以实现控制台和SD卡(针对Android)的日志输出,从而在实际...
### Log4j入门详解 #### 1. Log4j简介 ...总结而言,Log4j是一个非常强大的日志管理工具,通过合理的配置可以极大地提高日志记录的效率和可读性。无论是初学者还是经验丰富的开发者,都能从中受益。
**标题与描述解析** 标题“log4j.rar log4j使用...通过阅读提供的`log4j使用方法.doc`文档,你可以更深入地学习如何在你的项目中有效地利用log4j。而`log4j.rar`文件则可能包含实际操作的例子,可以帮助你实践所学。
总结来说,log4j 1.2.15的源码学习对于Java开发者而言是一次宝贵的实践机会,能够帮助我们了解日志框架的设计思路,提升解决问题的能力。通过对源码的阅读和理解,我们可以更好地利用log4j,同时也能为未来的日志...
- 通过对`log4j`的基本概念、主要组件以及配置方法的学习,我们可以有效地利用`log4j`来管理项目的日志记录需求,提高开发效率并确保应用稳定运行。 #### 11. 附录 - **参考文档**:列出了一些相关的技术文档和资料...
PHP作为一个广泛应用的服务器端脚本语言,也有类似的需求,因此出现了phplog4j这样的工具,它可能提供了与Java Log4j类似的日志记录功能,方便PHP开发者进行系统调试和问题排查。 在描述中提到的“NULL”可能意味着...
**日志系统的重要性** 在软件开发中,日志系统扮演着至关重要的角色。...深入学习和理解Log4j,能够极大地提高你的开发效率和问题排查能力。在实践中不断探索,你会发现更多Log4j的高级特性和应用场景。
总结来说,Log4j是一个强大且灵活的日志框架,它允许开发者自定义日志级别、输出格式和输出目的地,从而更好地管理和监控应用程序的运行状态。通过深入学习Log4j的源代码,开发者可以定制化日志系统,以适应各种复杂...
**标题与描述解析** ...通过Eclipse工程文件,学习者可以深入理解Log4j的工作原理,以及如何配置和使用它来适应不同场景的需求。这个实例工程为开发者提供了一个实践Log4j功能的平台,有助于提高日志管理能力。