Log4j结合spring的使用配置
来源:互联网 发布:怎么退出linux中man 编辑:程序博客网 时间:2024/04/27 17:01
在我们的日常开发中,日志记录非常重要。 我们可以在测试中检测代码变量变化,跟踪代码运行轨迹。同时也可以创建一些基本的应用级别日志功能。 Log4j是Apache的一个开放源代码项目,它提供了一种细腻的日志管理方式。 通过一个配置文件,我们可以多选择的控制每条日志的输出格式和目的地。通过定义信息的级别,我们也可以灵活开关代码中的反馈信息。在本文中,我们使用log4j在Spring环境的配置来演示日志功能的使用。
在web.xml中的定义:
<context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener>
实际应用中,我们在web.xml定义如下配置:首先log4jConfigLocation类定义log4j配置文件路径。Log4J's watchdog thread will asynchronously check whether the timestamp of the config file has changed, using the given interval between checks. A refresh interval of 1000 milliseconds (one second), which allows to do on-demand log level changes with immediate effect, is not unfeasible.
Log4jConfigListener是spring提供的工具类,它开启一个log4j的监视线程,并每60(log4jRefreshInterval变量定义)秒检测日志配置变化,从而不需要每次重新启动web服务来应用新的配置。在tomcat中没有根据web应用来分开系统属性。所以必须为每一个web应用定义唯一的 "webAppRootKey",我们取名为webApp.root. 在启动环境后,Log4jConfigListener 会将某某值注入到webApp.root变量。具体什么值,为什么我们这样定义,请继续往下来看。
下面的工作该log4j.properties的配置了。spring也支持xml的配置文件格式。在项目中经常会有不同的日志需求,比如数据库操作日志,邮件日志 或者 用户操作日志。我们可以输出所有的日志到统一的文件,也可以根据功能模块来定义不同的日志文件。
log4j.logger.uk.salford.ian.site.mvc=DEBUG,stdout,modellog4j.logger.uk.salford.ian.site.service=DEBUG,stdout,db
在本例中,我们对两个功能模块做不同的日志定义。uk.salford.ian.site.mvc 和 uk.salford.ian.site.service 为同一项目的两个包, 分别代表mvc模块和service服务模块。log4j支持包级的日志定义,所以我们可以根据不同的功能模块做相应的定义。并且值得注意的是,log4j支持包日志的继承。任何子包在mvc或者service下,可以继承父的日志定义。 DEBUG,stdout,model:DEBUG代表日志的信息显示级别。级别分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 stdout,model 为 两个自定义的 appender 名称。
其中,Log4j提供的appender有以下几种: org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 下面我们再来看appender的定义
log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5r [%5p][%c{2}] %m%n
stdout使用控制台appender,所有日志信息将直接显示到控制台。mvc和sevice不同的是,它们还使用自己唯一的appender:model 和db,这样日志信息将会被相应的两个appender来管理。
model日志的定义:log4j.appender.model=org.apache.log4j.RollingFileAppenderlog4j.appender.model.File=${webApp.root}/WEB-INF/logs/model/model.loglog4j.appender.model.Append=truelog4j.appender.model.MaxFileSize=1MBlog4j.appender.model.MaxBackupIndex=1log4j.appender.model.layout=org.apache.log4j.PatternLayoutlog4j.appender.model.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
我们将model里日志信息输出到${webApp.root}/WEB-INF/logs/model/model.log。 一个特别需要注意的地方是:log4j.appender.model.File=${webApp.root}/WEB-INF/logs/model/model.log我们输出信息到${webApp.root}/WEB-INF/logs/model/model.log。其中webApp.root值从哪儿来的呢,还记得我们在web.xml的定义吗,在listener工作的时候,它就将网站目录路径注入到我们自定义的webApp.root变量。这样,我们可以使用相对路径来管理日志路径,而不是写成绝对的 d:/log.log,诸如此类。
下面是db的定义,我们输出db操作的日志信息输出到db目录下的db文件。
log4j.appender.db=org.apache.log4j.FileAppenderlog4j.appender.db.File=${webApp.root}/WEB-INF/logs/db/db.loglog4j.appender.db.Append=truelog4j.appender.db.layout=org.apache.log4j.PatternLayoutlog4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
最后是在类中的调用,非常简单
@InjectDisable static Logger logger = Logger.getLogger(IndexAction.class); logger.debug("it's show time?################################"); logger.error("错误了吗.好象没有 ################################"); logger.info("info就info撒################################");
注意:@InjectDisable是Easyjf中需要的。默认情况下,Easyjf会将属性自动注入,通过@InjectDisable,我们可以关闭注入来自己管理属性值。
- Log4j结合spring的使用配置
- Log4j结合spring的使用配置
- Log4j结合spring的使用配置
- Log4j结合spring的使用配置
- log4j 结合 spring 配置加载机制
- spring中使用log4j的配置
- Spring 中log4j的配置和使用
- 简单介绍Log4J的使用和Spring 配置log4j
- Spring 配置log4j和简单介绍Log4J的使用
- Spring 配置log4j和简单介绍Log4J的使用
- Spring 配置log4j和简单介绍Log4J的使用
- Spring 配置log4j和简单介绍Log4J的使用
- Spring 配置log4j和简单介绍Log4J的使用
- 使用spring aop结合log4j做日志
- 使用spring aop结合log4j做日志
- Spring的log4j配置
- log4j与tomcat结合的简单配置
- Spring的log4j使用
- .net下的jmail组件
- C中的可变参数研究
- 我的博客
- C#性能测试
- ehcache API
- Log4j结合spring的使用配置
- 听史上最牛历史老师讲课
- ASP.net发邮件的例程WEBMAIL
- 涉及网络编程时,需要用到的几个常用方法
- xml数字签名
- ASP.NET安全身份验证的实现
- c++笔试题汇总
- Nutch 初体验
- c++笔试题汇总