[转]Spring中配置log4j
?
1.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>?
?
设置监听器?
?
?
2.配置log4j的properties文件?
?
#先设置级别?
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?
?
有了上面的配置,我们就可以查看日志了!?
?
?
3.在程序中想要输出log的地方加入log4j的支持?
?
(1)引入 import org.apache.log4j.Logger?
?
(2)声明一个logger?
?
private static Logger logger = Logger.getLogger(ClassName.class);?
?
(3)在程序中的相应位置加入输出信息?
?
logger.info("用户登录:"+user.getAccount());?
?
ok,完成了,当有登录时会在控制台和文件中同时输出log信息如下?
?
2007-01-10 16:02:54 [com.my.web.UserAction]-[INFO] 用户登录:yangsq?
?
?
附注:?
?
以下是配置文件(log4j.properties)的一些重要的语法?
?
定义配置文件?
?
其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。?
?
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:?
?
配置根Logger,其语法为:?
?
log4j.rootLogger = [ level ] , appenderName, appenderName, …?
?
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。?
?
appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。?
?
配置日志信息输出目的地Appender,其语法为?
?
log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.option = valueN?
?
其中,Log4j提供的appender有以下几种:?
?
org.apache.log4j.ConsoleAppender(控制台),?
?
org.apache.log4j.FileAppender(文件),?
?
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),?
?
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)?
?
配置日志信息的格式(布局),其语法为:?
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 log4j.appender.appenderName.layout.option = valueN?
?
?
?
其中,Log4j提供的layout有以下几种:?
?
org.apache.log4j.HTMLLayout(以HTML表格形式布局),?
?
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),?
?
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),?
?
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)