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配置文件日志级别也能用了。
相关推荐
Spring MVC框架整合log4j的完整代码。
Spring MVC集成 Log4j
Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效,非常好用老版的BurpSuite和新版的都可以使用。祝大家挖洞顺利(工具仅用于学习交流)
springmvc5+hibernate5+junit4+log4j2整合实例 包含 代码实例 数据库建表sql 运行环境 myeclipes2015 jdk 1.8 tomcat 8.0
本篇文章主要介绍了Spring 5.0集成log4j2日志管理的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java日志全面示例,可以下载运行,简洁易懂,能说明问题。 用maven构建,Java中普通加载log4j,普通web项目加载log4j,Spring项目加载log4j,让你彻底清除Java日志的配置和集成
集成 struts2 hibernate spring log4j tomcat mysql 的一个简单项目 在MyEclipse8.5 tomcat 下运行成功
spring boot 集成log4j2工程,多环境下使用不同的log4j2配置文件。 对应的博客地址:http://blog.csdn.net/woniu211111/article/details/54347846
现在很流行springboot的开发,小编闲来无事也学了学,开发过程中遇见了log4j日志的一个小小问题,特此记载。 首先在pox.xml中引入对应的maven依赖: <!-- 引入log4j--> <groupId>org.springframework....
NULL 博文链接:https://fangyong1307.iteye.com/blog/2276550
springmvc spring3 hibernate4 log4j 完整的注解配置 spring切面自动打日志等,需要自己建一个小表 可运行 并且已经将bootstrap集成进去.
SHOW VARIABLES LIKE '%log_bin%' 如果log_bin的值为OFF是未开启,为ON是已开启。 未开启的话可以修改/etc/my.cnf 开启binlog [mysqld] log-bin=mysql-bin binlog-format=ROW server_id=1 配置好后重启mysql。 ...
SSM+cxf+log4j整合框架;springmvc+spring+mybatis整合开发,内部集成webservice技术,采用cxf框架进行实现,log4j进行日志记录
本文主要介绍了在 Spring Boot 框架中如何使用 Log4j 和 Slf4j,并通过对比分析它们的优缺点,帮助读者更好地选择合适的日志记录工具。文章中提供了完整的示例代码,并附有详细的注释说明。 Log4j 和 Slf4j 都是...
主要涉及log4j-2.15.0-rc2核心jar包以及springboot整合jar包
SpringMVC精品资源--Spring+Springmvc+Mybatis框架,后续集成日志插件log4j、lo
springboot+maven+mybatis+log4j2+idea的框架搭建,其中包含了一个工程集成了多个数据库系统的编写,log4j2的XML 与yml格式的配置
新手入门专用,赶紧来看看 (这里用的是springboot2.2.1.RELEASE,高版本可能容易出错)