第一步:在web.xml初始化log4j
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

配合org.springframework.web.util.Log4jConfigListener来设置spring环境下的Log4j。

第二步:在上面的配置中,使用了log4j.properties作为log4j的配置文件,log4j.properties摘要代码如下:

log4j.rootLogger=ERROR,consol
log4j.logger.jmccLogger=ERROR,html log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout log4j.appender.html=org.apache.log4j.RollingFileAppender
log4j.appender.html.maxFileSize=1KB
log4j.appender.html.maxBackupIndex=2
log4j.appender.html.file=${webapp.root}/WEB-INF/log/ex.html log4j.appender.html.layout=org.apache.log4j.HTMLLayout
log4j.appender.html.layout.locationInfo=true

说明:在web环境中集成log4j,关键的一步是如何找到项目真实路径,当然你也可以固执地把日志文件放在某个绝对路径上:比如 log4j.appender.html.file=D:/ex.html 。但是真的要使用绝对路径吗?幸运的是spring为我们解决了此问题,spring提供了 org.springframework.web.util.Log4jConfigListener监听器来初始化一些必要的log4j信息,比如它使 用了System.setProperty(keyroot);  没错key=webapp.root,而root就是当前项目的真实路径(得到项目的真实路径也很简单ServletContext.getRealPath("/")),这样我们就可以使用${webapp.root}来获取项目的真实路径。

第三步:获取Logger对象,并在需要记录日志的地方进行日志记录。

补充:如果熟悉listener,并且知ServletContext.getRealPath("/"),其实这个用的频率也较高。那么完全可以写一个类似spring的Log4jConfigListener,当然也可以直接拷贝这个类,如果在项目中你并不想使用spring,只是想用log4j

最新文章

  1. ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法
  2. CVPR历年Best Papers
  3. C# 隐式类型转换
  4. ASP.NET ZERO 学习 HangFire的使用
  5. Java 有理数类 分数类 Rational类的设计与实现
  6. select()2
  7. bzoj1786
  8. Java内存使用量测试
  9. Java微信公众平台开发之OAuth2.0网页授权
  10. phthon网络编程
  11. 【洛谷T7153】(考试) 中位数
  12. vue 的模板编译—ast(抽象语法树) 详解与实现
  13. ACM Meteor Shower
  14. stylus 详解与引入
  15. shell的进度条【转】
  16. Jexus~Linux环境下的部署
  17. 【转帖】Linux的历史----Linux内核剖析(一)
  18. PL/SQL 加字段 修改数据库之后 之后记得保存脚本
  19. Python学习之旅(二十一)
  20. 造轮子和用轮子:快速入门JavaScript模块化

热门文章

  1. python select poll
  2. Mybatis入门配置
  3. 4-es6的模块化编程
  4. 647. Palindromic Substrings(马拉车算法)
  5. linux系统中python版本升级
  6. C++ 单链表的实现
  7. Oracle数据库创建表ID字段的自动递增
  8. 简单的Sqlite使用方法
  9. 【前端】用javaScript实现实现一个球池的效果
  10. 如何调试ubifs文件系统