24小时热门版块排行榜    

查看: 313  |  回复: 3
当前主题已经存档。

studyhard2008

[交流] Log4j深入浅出

Log4j是Apache组织的一个开源项目,它是一个日志操作包,通过使用Log4j可以指定日志信息输出的目的地,如控制台,文件,GUI组件,NT的时间记录器,还可以控制每一条日志输出的格式,此外通过定义日志的级别,能够非常细致的控制日志的输出,最好的地方是这些功能可以通过一个配置文件来灵活的进行配置,而不需要修改程序代码.在应用程序中输出日志有三个目的:
1)     监视代码变量的变化情况,把详细信息记录到文件中,进行统计分析.
2)     跟踪代码运行轨迹,作为日后审计的依据.
3)     担当集成开发环境中的调试器的作用,向文件和控制器打印代码的调试信息.
学习Log4j最重要的是首先要了解两个常用的接口:Log和LogFactory.首先说一说Log接口.通用日志包把日志消息分为6个级别:

[ Last edited by 幻影无痕 on 2006-10-30 at 08:03 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

studyhard2008

1)     fatal致命的
2)     error错误
3)     warn警告
4)     info信息
5)     debug调试
6)     trace细节
其中级别按照以上的顺序,org.apache.commons.logging.Log接口代表日志器,它提供
一组输出日志的方法.例如fatal(Object message)参数都是一个对象,要注意的是只有当它输出日志的级别大于或者等于为日志配置的级别的时候,这个方法才会被执行.Log接口还提供了一组判断是否允许输出特定级别日志信息的方法,很简单例如isFatalEnabled()在程序输出某种级别的日志消息之前,提倡先调用以上的方法来判断该级别的日志是否允许输出,这有助于提高应用的性能.这种判断主要是为了提高性能,避免执行多余的操作.
以上阐述了重要的Log接口,下面简单说明一下LogFactory接口,这个接口也和Log接口一样在logging包中,接口提供了获得日志器实例的两个静态方法如下:
public static Log getLog(String name)throws LogConfigurationException;
public static Log getLog(Class class)throws LogConfigurationException;
第一个getLog()方法name参数作为日志器的名字,第二个getLog()方法以class参数指定的类的名字作为日志器的名字.
2楼2006-05-13 13:35:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

studyhard2008

在强调可重用组件的今天,除了自己从头到尾开发一个可重用的日志操作类以外,还有一个Apache为我们提供的一个强有力的现成的日志操作包Log4j.主要由三大组件构成:
1)     Logger:负责生成日志,并能够对日志信息进行分类筛选.
2)     Appender:定义了日志信息输出的目的地,指定日志信息应该被输出到什么地方.
3)     Layout:指定日志信息的输出格式.
以上的三个组件协同工作,使得开发者能够依据日志信息类别记录信息,并能够在程序运行期间,控制日志信息的输出格式以及日志的存放地点.Log4j的Appender组件决定日志输出到什么地方,目前Log4j的Appender支持将日志信息输出到控制台Console,文件,GUI组件.一个Logger可以同时对应多个Appender也就是说一个Logger的日志信息可以同时输出在多个目的地上.例如可以为rootLogger配置两个Appender,一个是file一个是console可以这样写:log4j.rootLogger=warn.file.console然后可以用appender.console或者是appender.file来指定具体的控制台或者文件.当以上的都设置好了以后还需要配置Layout组件,主要是解决日志的输出格式,它的类型有:HTMLLayout(html格式),PattemLayout(可以灵活的指定布局模式),SimpleLayout(包含日志信息级别和信息的字符串)TTCCLayout(包含日志生产时间,线程和类别等信息).通过如上的研究已经可以配置Log4j了,然后就可以通过Log4j的API来操作日志了.如果要在Web应用中使用Log4j,需要创建一个配置文件配置Log4j的环境,然后就可以在其他的Web组件中获取Logger对象并输出日志.下面展示一个局部的Log4j,这里只是举例Log4j的配置文件和在具体的Action中进行调用,如下:
1)     将Log4j的jar文件copy到WEB-INF的lib目录下.
2)     创建Log4j的配置文件log4j.properties存放在classes目录下.
Log4j.rootLogger=INFO,console,file
Log4j.appender.console=org.apache.log4j.ConsoleAppender
Log4j.appender.file=org.apache.log4j.RollingFileAppender
Log4j.appender.file=e:/log/log.txt
Log4j.appender.console.layout=org.apache.log4j.PattemLayout
Log4j.appender.console.layout.ConversionPattrm=%t%p-%m%n
Log4j.appender.file.layout=rog.appache.log4j.HTMLLayout
Log4j.appender.file.layout.ConversionPattem=%t%p-%m%n
3楼2006-05-13 13:37:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

studyhard2008

配置文件配置好了,在Action里调用我就不用详细写了,很简单,就是引入logging的包,然后在execute()方法中通过Log log=LogFactory.getLog(“name”);获取具体的Log对象,在通过log.fatal(“信息”);类似的方法操作日志,还可以通过isDebugEnbled()等方法判断日志的输出.
    回顾一下Log4j主要三个组件构成:Logger,Appender,Layout,Logger控制日志信息的输出,Appender决定输出的目的地,Layout决定日志输出的格式.Log4j允许客户在配置文件文件中灵活的配置这些组件,然后读取配置文件中并配置Log4j环境,然后就可以在程序中任何要输出日志的地方调用适当的方法,这样对于日后程序的调试有着重大的作用.
4楼2006-05-13 13:38:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 studyhard2008 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +7 ASdOkHsho7FD 2026-08-28 10/500 2026-08-31 00:42 by hZiFeudZyoGR
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +7 ASdOkHsho7FD 2026-08-28 11/550 2026-08-31 00:32 by hZiFeudZyoGR
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 zICmwzsBXjbN 2026-08-29 5/250 2026-08-30 20:08 by hZiFeudZyoGR
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 jCd0dEvKHShX 2026-08-29 4/200 2026-08-30 19:57 by hZiFeudZyoGR
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 jCd0dEvKHShX 2026-08-29 7/350 2026-08-30 19:45 by hZiFeudZyoGR
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jCd0dEvKHShX 2026-08-29 6/300 2026-08-30 19:13 by hZiFeudZyoGR
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 G6APbkg8SA6w 2026-08-29 4/200 2026-08-30 18:51 by hZiFeudZyoGR
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:40 by hZiFeudZyoGR
[博后之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 gy1nBQXYQJqL 2026-08-29 4/200 2026-08-30 18:28 by hZiFeudZyoGR
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 gy1nBQXYQJqL 2026-08-29 6/300 2026-08-30 17:47 by hZiFeudZyoGR
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 gy1nBQXYQJqL 2026-08-29 8/400 2026-08-30 12:03 by l0VvVHGBGRLv
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 gy1nBQXYQJqL 2026-08-29 8/400 2026-08-30 12:03 by l0VvVHGBGRLv
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +8 ASdOkHsho7FD 2026-08-28 9/450 2026-08-30 11:40 by l0VvVHGBGRLv
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 7/350 2026-08-30 06:10 by ZPa0EcMwuECS
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
信息提示
请填处理意见