日期:2014-05-19  浏览次数:20753 次

J2EE里面使用log4j
目前基本上没有哪个项目开发是不用到日志管理的,而目前大部分项目的日子管理都采用了apache的log4j,下面就简单介绍一下log4j在J2EE开发中的基本应用

第一步:配置log4j,先建立一个log4j.properties文件,一般放在类路径下面,文件的内容如下,具体一下参数比较简单就不详细说明,请自己百度,goolge搜一下
#log4j.rootLogger = [ level ] , appenderName, appenderName, ...
log4j.rootLogger = DEBUG, console, R
#level=INFO,all can be output
#console is set to be a ConsoleAppender
log4j.appender.console = org.apache.log4j.ConsoleAppender
#console have four patterns
#org.apache.log4j.HTMLLayout
#org.apache.log4j.PatternLayout
#org.apache.log4j.SimpleLayout
#org.apache.log4j.TTCCLayout
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#define the output type
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#file is set to output to a extra file
log4j.appender.R = org.apache.log4j.RollingFileAppender
#the absolute route of the log4j file
log4j.appender.R.File = ${webapp.root}/WEB-INF/logs/kingcat.log
#the size
log4j.appender.R.MaxFileSize = 500KB
#back up a file
log4j.appender.R.MaxBackupIndex = 1
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] - %m%n


第二步:建立好了文件后,下面就在web.xml文件中配置一下该文件,内容如下

<!-- 配置Log4J-->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/config/log4j.properties</param-value>
	</context-param>
	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>1800000</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

注意:
<param-value>/WEB-INF/config/log4j.properties</param-value>

为log4j配置文件路径,默认从项目根目录开始,18000000为刷新Log4j配置文件的间隔,单位为millisecond,这样重新修改了log4j配置文件后就不用重启服务器

第三步:现在就可以在类里面使用了,简单如下,首先或的Logger对象,然后就调用方法即可
 private static Logger logger = Logger.getLogger(PurviewAction.class);
 logger.error("获得所有权限时发生异常");


下面是网上关于log4j的一些说明:

首先需要在web.xml进行声明:
<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"-->
<context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>ssh.root</param-value>
</context-param>

这里的ssh是http://localhost:8080/ssh/
而root是系统开发目录中ssh/root

这样配置文件以及日志文件可以在spring的帮助下,放到开发环境中的任意位置

<!--由Sprng载入的Log4j配置文件位置-->
<context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

在这里定位配置文件,需要的是从root开始的绝对路径

<!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond-->
<context-param>
  <param-name>log4jRefreshInterval</param-name>
  <param-value>60000</param-value>
</context-param>

<!--Spring log4j Config loader-->
<listener>
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

设置监听器

/////////////////
之后我们就可以配置log4j配置文件了

#先设置级别
log4j.rootCategory=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#在这里设置日志需要存放的位置,这里的变量就是我们在web.xml里设置的
log4j.appender.file.File=${ssh.root}/WEB-INF/logs/subject.log
log4j.appender.file.MaxFileSize=100KB
log4j.appender.file.MaxBackupIndex=0
log4j.appender.file.layout=org.apache.log4j.SimpleLayout
log4j.appender.file.layout.ConversionPattern=[ssh] %p %t %c - %m%n

有了上面的配置,我们就可