`
digyso
  • 浏览: 142102 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Log4j结合spring的使用配置

阅读更多

http://www.easyjf.com/blog/html/20080108/1015819.html

在我们的日常开发中,日志记录非常重要。 我们可以在测试中检测代码变量变化,跟踪代码运行轨迹。同时也可以创建一些基本的应用级别日志功能。 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,model
log4j.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.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.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.RollingFileAppender
log4j.appender.model.File=${webApp.root}/WEB-INF/logs/model/model.log
log4j.appender.model.Append=true
log4j.appender.model.MaxFileSize=1MB
log4j.appender.model.MaxBackupIndex=1
log4j.appender.model.layout=org.apache.log4j.PatternLayout
log4j.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.FileAppender
log4j.appender.db.File=${webApp.root}/WEB-INF/logs/db/db.log
log4j.appender.db.Append=true
log4j.appender.db.layout=org.apache.log4j.PatternLayout
log4j.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,我们可以关闭注入来自己管理属性值。

分享到:
评论
2 楼 hqmxlyx 2016-07-27  
testd
1 楼 hqmxlyx 2016-07-27  
[color=darkred][/color]

相关推荐

    Spring的log4j以及配置文件

    在Spring框架中,我们通常会结合使用Log4j来实现日志记录,因为Log4j具有高度可配置性、性能优秀和功能丰富的特点。 Log4j是Apache软件基金会的一个项目,它是一个强大的日志工具,支持多种输出格式,包括控制台、...

    spring简单注解+log4j记录日志

    现在,将Spring与Log4j结合使用。在Spring的bean中,我们可以使用`@PostConstruct`和`@PreDestroy`注解来标记初始化和销毁方法,同时在这些方法中插入Log4j的日志记录,以便追踪bean的生命周期。例如: ```java @...

    spring-boot-starter-log4j2

    2. 配置Log4j2:Spring Boot默认使用`src/main/resources/log4j2.xml`或`log4j2.json`作为Log4j2的配置文件。你可以根据需求自定义日志级别、输出格式、输出位置等。 四、Log4j2配置详解 1. 日志级别:Log4j2支持...

    Spring Aop+Log4j 动态日志

    本篇将详细探讨如何结合Spring AOP和Log4j实现动态日志记录。 Spring AOP是Spring框架的一个重要特性,它允许我们以一种声明式的方式处理横切关注点,如日志、事务管理等。AOP的核心概念包括切面(Aspect)、通知...

    spring log4j 实例

    本实例结合Spring和Log4j,将为你提供一个实用的日志解决方案。 首先,我们要理解Spring是如何集成Log4j的。Spring框架通过Apache Commons Logging接口来提供日志服务,而Log4j可以作为这个接口的实现。因此,我们...

    spring整合log4j

    3. **在Spring中使用Log4j**:在Spring配置文件(如`applicationContext.xml`)中,启用Log4j支持: ```xml &lt;context:property-placeholder location="classpath:log4j.properties" /&gt; ``` 4. **在代码中注入...

    spring mvc log4j

    - 使用 `log4jConfigLocation` 参数在 Spring 配置文件中指定 `log4j.properties` 或 `log4j.xml` 文件的位置。 6. **日志级别管理** - 可以在运行时通过修改 Log4j 配置文件,或者使用 `log4j-api` 提供的 API ...

    搭建SSH框架需要引入的Struts2包(log4j,spring-web,struts2-spring-plugin)

    Log4j提供了丰富的配置选项,允许开发者定制日志级别、输出格式和目的地,使得在项目运行过程中可以方便地收集和分析信息。 在实际搭建SSH框架时,我们需要将这些jar文件添加到项目的类路径中。对于Struts2和Spring...

    springmvc log4j 配置 demo

    要将Log4j与Spring MVC结合,我们需要完成以下步骤: 1. **引入依赖**:在项目的pom.xml文件中,添加Log4j的依赖。例如: ```xml &lt;groupId&gt;log4j &lt;artifactId&gt;log4j &lt;version&gt;1.2.17 ``` 2. **配置log4j....

    Spring版本Log4J的Demo

    在Spring框架中集成和...通过这个项目,你可以学习到如何结合Spring和Log4J进行日志管理,提升应用的可维护性和调试效率。请仔细研究项目中的`log4j.properties`配置文件,以及相应的Java类,以深入理解这一实践过程。

    springmvc5+hibernate5+junit4+log4j2整合实例

    6. **配置Log4j2**:在项目中添加Log4j2的配置文件(如log4j2.xml或log4j2.json),定义日志级别、输出目的地(如控制台、文件)和格式。 7. **编写业务逻辑**:使用Spring MVC的Controller、Service和DAO组件实现...

    spring框架和log4j日志用到的jar包

    总的来说,Spring框架和Log4j的结合使用,为Java开发带来了便利,通过合理的配置和设计,可以构建出高效、稳定且易于维护的企业级应用。理解并熟练掌握这两个工具的使用,对于提升Java开发者的技能和效率至关重要。

    apache-log4j-2.14.0-bin.zip

    在实际使用中,开发者通常会在应用中引用`log4j-api-2.14.0.jar`和`log4j-core-2.14.0.jar`,并将自定义的配置文件放置在类路径下。配置文件可以指定日志记录的级别(DEBUG、INFO、WARN、ERROR等),选择日志输出的...

    maven+springmvc+mybatis+log4j框架搭建

    本教程将详细阐述如何使用四个关键组件——Maven、SpringMVC、MyBatis和Log4j——来搭建一个强大的Web应用框架,旨在提高开发效率并优化项目管理。 **Maven** 是一个流行的项目管理和综合工具,它通过统一的构建...

    spring+hibernate+log4j所需要的jar包

    Spring、Hibernate和Log4j是Java开发中三个非常重要的库,它们各自负责不同的领域,而将它们结合在一起,可以构建出强大的企业级应用系统。 Spring是一个全面的后端应用程序框架,它提供了依赖注入(DI)和面向切面...

    Spring-LOG.rar_log4j

    将Log4j与Spring结合使用,可以实现日志管理的灵活性和便利性。Spring通过其ApplicationContext支持对Log4j的自动配置,使得在Spring应用中引入日志记录变得简单。以下是实现步骤: 1. **添加依赖**:在项目构建...

    [SSH+Maven+Bootstrap视频教程]_17. 添加 log4j.properties 配置文件.zip

    在本节视频教程中,我们将深入探讨如何在Java项目中集成SSH(Struts、Spring、Hibernate)框架,并结合Maven构建工具以及Bootstrap前端框架,来添加和配置`log4j.properties`日志文件。这个过程对于任何Java开发人员...

    log_log4j_配置文件_springmvc_spring_mybatis_

    本资源包围绕`log4j`的配置文件,结合`Spring MVC`、`Spring`以及`MyBatis`这三大流行框架,提供了完整的配置示例,以帮助开发者更好地理解和使用这些技术。 `log4j.properties`是`log4j`的日志配置文件,它的核心...

    spring-mvc-log4j

    这个项目的目的是展示如何在Spring MVC应用中配置和使用Log4j来记录应用程序的日志信息。 在Spring MVC中,日志系统对于调试、性能监控以及问题排查至关重要。Log4j提供了灵活的日志级别(如DEBUG、INFO、WARN、...

    spring+springmvc+mybatis+结合前端easyUI框架,log4j日志文件配置

    log4j配置文件通常为log4j.properties或log4j.xml,其中定义了日志级别(DEBUG、INFO、WARN、ERROR等)、输出目的地(控制台、文件、邮件等)以及格式化方式。在本项目中,配置文件可能包含对不同类或包的日志级别...

Global site tag (gtag.js) - Google Analytics