浏览 8441 次
锁定老帖子 主题:在war包中使用Log4j的问题
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-02
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-02-02
将Log4j加入Classpath后就行了
|
|
返回顶楼 | |
发表时间:2004-02-18
很多地方都在介绍LOG4J,看来很好。我也看了看,想把它用到项目中去,能介绍一下你是怎么做的吗?
|
|
返回顶楼 | |
发表时间:2004-02-18
当然可以咯,你想知道那方面的呢?是怎么配置还是怎么在代码中使用?
|
|
返回顶楼 | |
发表时间:2004-02-19
我是第一次用LOG4J,你就给我多介绍点吧。
我想知道配置的步骤和需要注意的地方,配置好了就可以在程序中用了吧。 |
|
返回顶楼 | |
发表时间:2004-02-20
首先,log4j的配置有两种方式一种是使用properties文件,一种是使用xml文件。一般看你的习惯了,我是喜欢使用xml文件的。基本配置的主要内容分为二大块,一块是appender你可以认为是输出方式,一块是Logger就是日志记录器。
appender常用的有输出到控制台的、输出到文件的、输出到数据库的,以及输出到某个socket的。每个appender需要设置它的输出格式也就是layout。layout也有许多种,我经常使用XMLLayout,主要是我喜欢用log4j自带的chainsaw这个工具来查看日志,这个工具只能查看XML格式的文档。如果不用这个工具,那一般就会使用PatternLayout,然后设置ConversionPattern即具体的输出格式。 logger是用来区分不同的日志记录器的。log4j中最高的级别是root,自己定义的级别都是root的子logger。每个logger都可以指定appender,如果没有指定就按照其父logger的appender来输出。举个例子:net.example,如果没有指定它的appender则它会去找net的appender,如果net也没有指定就按照root的来。所以,一般来说你需要指定root的appender,不然如果你没有为某一特定category的logger指定appender就会显示log4j初始化出错。此外logger的设置中还需要指定需要输出的日志级别,日志级别有info,warn,error,debug,fatal等,你也可以定义自己的级别。 在配置文件中完成后,需要将log4j.jar和log4j.xml(log4j.properties)放在类路径上,这样会起作用。下面是一个log4j.xml的例子。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="CON" class="org.apache.log4j.FileAppender"> <param name="Threshold" value="INFO"/> <param name="File" value="C:/Documents and Settings/xujin/My Documents/logs/system.log"/> <layout class="org.apache.log4j.xml.XMLLayout"/> </appender> <appender name="HIBERNATE" class="org.apache.log4j.FileAppender"> <param name="File" value="C:/Documents and Settings/xujin/My Documents/logs/hibernate.log"/> <layout class="org.apache.log4j.xml.XMLLayout"/> </appender> <appender name="CIPEJB" class="org.apache.log4j.FileAppender"> <param name="File" value="C:/Documents and Settings/xujin/My Documents/logs/cipejb.log"/> <layout class="org.apache.log4j.xml.XMLLayout"/> </appender> <logger name="net.sf.hibernate"> <level value="INFO"/> <appender-ref ref="HIBERNATE" /> </logger> <logger name="com.up.cip.ejb"> <level value="INFO"/> <appender-ref ref="CIPEJB" /> </logger> <root> <level value ="INFO" /> <appender-ref ref="CON" /> </root> </log4j:configuration> |
|
返回顶楼 | |
发表时间:2004-02-20
啊哈,非常感谢!
看了你的回复,感觉明白了不少。我准备用在WEB上B/S结构里,需要在WEB.XML里边配置一下吗?如果不配置是不是它找不到配置文件呢? 还有在程序里,是不是也像jdk里的logging一样,要写个初始化类,才可以直接用呢? |
|
返回顶楼 | |
发表时间:2004-02-20
fanth 写道 啊哈,非常感谢!
看了你的回复,感觉明白了不少。我准备用在WEB上B/S结构里,需要在WEB.XML里边配置一下吗?如果不配置是不是它找不到配置文件呢? 还有在程序里,是不是也像jdk里的logging一样,要写个初始化类,才可以直接用呢? 1。不需要在web.xml中写。只要保证你的log4.xml和log4j.jar都在类路经上就行了。 2。使用时只要在程序中写如下代码 Logger logger=Logger.getLogger(com.yourcompany);就得到了一个名为com.yourcompany的logger,然后记录时就调用类似logger.warn(logString)就行了。 |
|
返回顶楼 | |