log4j在tomcat项目中的使用
Posted 全栈攻城狮之道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j在tomcat项目中的使用相关的知识,希望对你有一定的参考价值。
温馨提示
log4j在spring框架中的配置网上很多教程,spring中对log的打印可以使用aop将其与业务逻辑分离开来,不过这不是本文要讨论的问题。本文将介绍如何在tomcat项目(简单的servlet项目与使用struts2+hibernate的项目 )中配置log4j及初始化和使用教程。
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以在控制台打印日志信息或者将日记信息输出到指定文件。在项目中使用日记是必不可少的,因为这日记信息可以帮助我们快速准确的定位到程序运行时的异常信息,从而修复异常。
如果是使用maven创建的工程,则只需要在pom.xml文件中添加log4j的依赖即可:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
如果不是maven工程,直接去下载jar包,将其放到工程的 WEB-INF/lib目录下。
选择表格中的http://log4j-1.2.17.zip/进入下载页
选择任意一个进行下载,下载完成后将其加压,并在解压后的目录中找到log4j***.jar包,将该jar包拷贝到项目的WEB-INF目录下即可。
在web项目的src目录下新建一个名为log4j.properties的文件(key=value格式的设置)。
log4j.properties中的相关配置详细介绍:
#配置根Logger
log4j.rootLogger = [ level ] ,appenderName1,appenderName2, …
其中 [level] 是日志输出级别,常用的有:
ERROR ,WARN,INFO ,DEBUG
它们的级别关系:ERROR>WARN>INFO>DEBUG
#配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
Appender(fully.qualified.name.of.appender.class) 为日志输出目的地,Log4j提供的appender有以下几种:
# | 类名 | 说明 |
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
Layout(fully.qualified.name.of.layout.class ):日志输出格式,Log4j提供的layout有以下几种:
# | 类名 | 说明 |
1 | org.apache.log4j.htmlLayout |
以HTML表格形式布局 |
2 | org.apache.log4j.PatternLayout | 可以灵活地指定布局模式 |
3 | org.apache.log4j.SimpleLayout | 包含日志信息的级别和信息字符串 |
4 | org.apache.log4j.TTCCLayout | 包含日志产生的时间、线程、类别等等信息 |
log4j.appender.appenderName.layout.ConversionPattern=
%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
# | 格式符号 | 说明 |
1 | %m | 输出代码中指定的消息 |
2 | %p | 输出优先级,即DEBUG,INFO,WARN,ERROR |
3 | %r |
输出自应用启动到输出该log信息耗费的毫秒数 |
4 | %c |
输出所属的类目,通常就是所在类的全名 |
5 | %t |
输出产生该日志事件的线程名 |
6 | %n |
输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” |
7 | %d |
输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921 |
8 | %l |
输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 |
这是我写demo时的配置,可以参考下。
第一行配置是指定打印日记的级别为debug,也就是debug级别以上的日记信息才会打印输出。后面跟着的参数为stdout,D,I,E是appenderName。
[stuout]块是配置将日记输出到控制台的;
[info]块是配置将info级别的日记输出到指定的文件。
在web.xml文件中配置log4j配置文件的文件名
然后在web.xml配置一个监听器(实现ServletContextListener接口的类),这是我们自定义的监听器,本文写的demo中创建的监听器类名为com.wjy.WebAppRunListener,该监听器会在tomcat服务启动时调用。我们只需要在我们定义的监听器中完成log4j的初始化就可以了。
<listener>
<listener-class>com.wjy.WebAppRunListener</listener-class>
</listener>
在com.wjy.WebAppRunListener implements ServletContextListener监听器中初始化log4j的代码:
以上是关于log4j在tomcat项目中的使用的主要内容,如果未能解决你的问题,请参考以下文章
web项目从tomcat移植到weblogic 启动提示错误
SSH2项目在Tomcat下部署后怎么获取log4j生成的日志文件路径