log4j在tomcat项目中的使用

Posted 全栈攻城狮之道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j在tomcat项目中的使用相关的知识,希望对你有一定的参考价值。

温馨提示


log4j在tomcat项目中的使用



log4j在spring框架中的配置网上很多教程,spring中对log的打印可以使用aop将其与业务逻辑分离开来,不过这不是本文要讨论的问题。本文将介绍如何在tomcat项目(简单的servlet项目与使用struts2+hibernate的项目 )中配置log4j及初始化和使用教程。


关于log4j


Log4j是Apache的一个开源项目,通过使用Log4j,我们可以在控制台打印日志信息或者将日记信息输出到指定文件。在项目中使用日记是必不可少的,因为这日记信息可以帮助我们快速准确的定位到程序运行时的异常信息,从而修复异常。

下载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在tomcat项目中的使用

选择任意一个进行下载,下载完成后将其加压,并在解压后的目录中找到log4j***.jar包,将该jar包拷贝到项目的WEB-INF目录下即可。


log4j配置详解


 在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级别的日记输出到指定的文件。


log4j在tomcat项目中的使用


在tomcat服务启动时初始化log4j


在web.xml文件中配置log4j配置文件的文件名

log4j在tomcat项目中的使用

然后在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项目中的使用

log4j在tomcat项目中的使用


使用log4j打印日记

log4j在tomcat项目中的使用

log4j在tomcat项目中的使用


log4j在tomcat项目中的使用


                ▼
更多精彩推荐,请关注我们
把时间交给阅读



以上是关于log4j在tomcat项目中的使用的主要内容,如果未能解决你的问题,请参考以下文章

web项目从tomcat移植到weblogic 启动提示错误

SSH2项目在Tomcat下部署后怎么获取log4j生成的日志文件路径

使用tomcat 6在spring webapp中设置Commons Logging / Log4j的问题

tomcat启动后,总是输出这些日志,想了解一下是啥意思

log4j将不同的日志级别输出到tomcat下

如何将web应用项目中log4j的日志只打印到独立的文件,不打印在Tomcat的catalina.out?