`
fishergay
  • 浏览: 33610 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring log4j 集成的那些事

 
阅读更多

1.使用spring集成log4j可以动态指定log日志输出到web项目路径中, 不用写死路径, 还可以动态修改log4j配置文件的日志级别。

2.在集成的过程中,记录一下我遇到的问题

 

log4j.property 配置文件

 

log4j.rootLogger=DEBUG,CONSOLE,FILE

log4j.logger.com.lysoft=DEBUG

#apche log
log4j.logger.org.apache.commons=ERROR

#spring log
#log4j.logger.org.springframework=DEBUG
log4j.logger.org.springframework.transaction=DEBUG

#hibernate log
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.hql=DEBUG
log4j.logger.org.hibernate.jdbc=DEBUG
log4j.logger.net.sf.ehcache=DEBUG 
log4j.logger.org.hibernate.cache=DEBUG
log4j.logger.org.hibernate.transaction=DEBUG
log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG
log4j.logger.org.hibernate.hql.internal.ast=ERROR

#valuelist log
log4j.logger.net.mlw.vlh=ERROR

#c3p0 log
log4j.logger.com.mchange.v2.resourcepool.BasicResourcePool=DEBUG

#out log to console
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c:%L] - %m%n

# Pattern to output the caller's file name and line number.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r %-5p [%d{yyyy-MM-dd HH:mm:ss}]  %m%n

#out log to file
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${ssh.root}/WEB-INF/logs/error.log
log4j.appender.FILE.MaxFileSize=5120KB
log4j.appender.FILE.MaxBackupIndex=10
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c:%L] - %m%n



 

我把log4j配置文件放在classpath中的,和spring集成后在,我的项目名称叫SSH,会在SSH/WEB-INF/logs/error.log  路径下面生成一个error.log日志文件, 由于我的tomcat是在d盘,还会在d:/WEB-INF/logs/error.log生成一个文件, 看着非常不爽, 如果部署到客户机器上面,2个地方生成日志,日志大的话,非常占空间,觉得还不爽,打算追根到底看是怎么回事, 于是上网查了下集成的文章, 对比下没有什么区别,就log4j配置文件放在WEB-INF下面,不过这样修改后启动tomcat会有warn

 

log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

 

网上也没有说怎么解决,而且做单元测试的时候也会找不到log4j的配置文件。

后来找到一篇文章说要把Log4jConfigListener 配置放在ContextLoaderListener配置的前面, 这样说来, 看看上面的warn也就知道怎么回事了, 也弄明白了我之前为什么会生成2个log日志文件了,如果是放在classpath下面,ContextLoaderListener可以自动找到log4j配置文件的路径,会根据log4j配置文件中log4j.appender.logfile.File=${ssh.root}/WEB-INF/logs/error.log这个配置在我d盘d:/WEB-INF/logs/error.log生成一个日志文件,由于Log4jConfigListener 还没有初始化,所以${ssh.root}这个取值是空的,就剩下WEB-INF/logs/error.log了,tomcat放在d盘,就形成了d:/WEB-INF/logs/error.log 

最后修正还是把log4j配置文件放在classpath下面(src目录),  修改web.xml配置

 

 

<!-- 加载log4j配置 -->
  	<!-- 注意一定要放在org.springframework.web.context.ContextLoaderListener之前 -->
  	<context-param>
		<param-name>webAppRootKey</param-name>
	  	<param-value>ssh.root</param-value>
	</context-param>
	<context-param> 
	   <param-name>log4jConfigLocation</param-name> 
	   <param-value>classpath:log4j.properties</param-value> 
	</context-param> 
	<!-- log4j每隔60秒扫描 一下配置文件的变化 -->
	<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>
  	
  	<!-- 初始化spring context -->
  	<context-param>
	  	<param-name>contextConfigLocation</param-name>
	  	<param-value>classpath:applicationContext-*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

 

修改后 不再生成2个日志文件了,单元测试日志显示也正常了, 动态修改log4j配置文件日志级别也能用了。

 

 

 

2
3
分享到:
评论
4 楼 yiqi1943 2015-04-11  
谢谢分享,解决了问题
3 楼 superxielei 2013-05-10  
angelhau 写道
放到web目录下面,是不太明智的。会对对项目的更新制造一些麻烦。
其实想要指定目录可以用${catalina.home}/logs/这种。catalina.home是全局变量,就是你的tomcat的跟路径。

同意~
2 楼 fishergay 2013-04-15  
好的, 谢谢, 回头试试。。
1 楼 angelhau 2013-04-15  
放到web目录下面,是不太明智的。会对对项目的更新制造一些麻烦。
其实想要指定目录可以用${catalina.home}/logs/这种。catalina.home是全局变量,就是你的tomcat的跟路径。

相关推荐

    spring log4j 实例

    首先,我们要理解Spring是如何集成Log4j的。Spring框架通过Apache Commons Logging接口来提供日志服务,而Log4j可以作为这个接口的实现。因此,我们可以通过配置Spring的logging.properties文件或log4j.properties...

    Spring项目中怎么配置log4j

    最后,为了使Spring与log4j集成,我们需要在`web.xml`(对于Web应用)或`context.xml`(对于非Web应用)中引入log4j的初始化参数,确保在应用启动时加载log4j配置: ```xml &lt;param-name&gt;log4jConfigLocation ...

    spring-boot-starter-log4j2

    总之,Spring Boot Starter Log4j2使得在Spring Boot项目中集成和使用Log4j2变得简单易行。通过合理配置,我们可以实现灵活的日志管理,满足各种开发场景的需求。在实际开发中,掌握Log4j2的配置和使用,能帮助我们...

    log4j与spring的详细配置。

    Spring框架,作为一个全面的Java企业级应用开发平台,也与Log4j深度集成,为开发者提供了方便的日志记录功能。本文将详细讲解Log4j的配置以及如何在Spring项目中使用Log4j。 **一、Log4j基础知识** 1. **Log4j组件...

    spring整合log4j

    Spring提供了与各种日志框架的集成,包括Log4j,使得日志配置更加方便。 整合Spring和Log4j,我们需要完成以下步骤: 1. **引入依赖**:在项目的Maven或Gradle构建文件中添加Log4j的依赖库。对于Maven,可以在`pom...

    Spring MVC 框架 整合log4j

    3. **在Spring MVC中使用Log4j**:在Spring MVC的Controller或其他需要记录日志的类中,引入`org.apache.log4j.Logger`,并创建一个实例。例如: ```java import org.apache.log4j.Logger; public class ...

    SpringBoot框架配置log4j和log4j2的配置代码

    &lt;artifactId&gt;spring-boot-starter-log4j ``` 2. **配置文件**:创建`log4j.properties`或`log4j.xml`文件,定义日志级别和输出目的地。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, ...

    spring mvc log4j

    **Spring MVC 集成 Log4j 知识点详解** Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它提供了模型-视图-控制器(MVC)架构模式来构建可维护、可扩展的Web应用。Log4j 是一个广泛使用的日志记录框架,它提供...

    maven-spring-mybatis小型项目开发环境(3)log4j集成

    在本项目中,"maven-spring-mybatis小型项目开发环境(3)log4j集成",我们将探讨如何在一个基于Maven、Spring和MyBatis的小型应用中整合Log4j日志框架。Log4j是Java应用程序广泛使用的日志记录工具,它提供灵活的日志...

    Spring版本Log4J的Demo

    本项目"SpringLog4JDemo"是一个基于Eclipse的实战示例,旨在教会开发者如何在Spring环境中配置和使用Log4J。 首先,Log4J是Apache组织开发的一款强大的日志处理框架,它提供了灵活的日志级别(DEBUG, INFO, WARN, ...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    在描述中,“若依框架”是一个基于Spring Boot的开源企业级快速开发平台,它也受到了Log4j漏洞的影响。因此,若依框架的用户需要及时下载并部署log4j2.16.0,以保护他们的系统免受潜在的攻击。通常,更新Log4j2的...

    springboot+mybatis+log4j2

    本项目将Spring Boot与MyBatis集成,同时舍弃了Spring Boot默认的日志系统Logback,转而采用Log4j2来实现日志记录。下面我们将详细讨论这三个技术及其在项目中的应用。 首先,Spring Boot是由Pivotal团队提供的一个...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    slf4j1.7.25+ log4j2.8.2 集成jar包

    "slf4j1.7.25+ log4j2.8.2 集成jar包" 提供了在Spring MVC项目中使用SLF4J和Log4j进行日志管理的必备组件。通过SLF4J的抽象层,你可以轻松地在不同的日志框架之间切换,而Log4j则提供了强大的日志记录功能。这个...

    springmvc5+hibernate5+junit4+log4j2整合实例

    在本整合实例中,我们将探讨如何将Spring MVC 5、Hibernate 5、JUnit 4 和 Log4j2 集成在一起,以构建一个高效、可测试和日志记录完善的Java Web应用程序。以下是对这些技术及其整合过程的详细说明: **Spring MVC ...

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

    使用Spring时,开发者还需要注意与其他Java库的兼容性,例如JDBC驱动、ORM框架(如Hibernate、MyBatis)的jar包,以及用于日志记录的log4j.jar、log4j-api.jar和log4j-core.jar。在实际项目中,这些jar包通常会被...

    springmvc log4j 配置 demo

    在这个"springmvc log4j配置 demo"中,我们将探讨如何将Log4j集成到Spring MVC应用中,以便进行高效且有组织的日志管理。 首先,Log4j是Apache的一个开源项目,提供了一套灵活的日志记录系统。它的优点在于可配置性...

    Spring对Log4J的增强.txt

    #### 一、Spring与Log4J集成概述 在Java企业级应用开发中,日志记录是一项至关重要的功能。它不仅有助于开发者调试程序,还能帮助系统管理员进行问题排查及性能分析。Spring框架作为Java开发领域的主流框架之一,...

    spring+springMVC+mybatis+log4j框架整合

    本文将深入探讨这些框架的集成以及log4j日志系统的应用。 首先,Spring框架作为核心,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,有助于简化应用的...

Global site tag (gtag.js) - Google Analytics