在Web应用中一般使用一个专门的Servlet来完成Log4J的配置,并保证在web.xml的配置中,这个Servlet位于

其它Servlet之前,以便在Servlet和jsp中调用。下面是这个servlet,代码如下:
import org.apache.log4j.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
   
public class Log4jInit extends HttpServlet {
     public void init() {
          String prefix =  getServletContext().getRealPath("/");
          String file = getInitParameter("log4j");//配置文件位置
          if(file != null) { 
              PropertyConfigurator.configure(prefix+file);
          }
     }

}

此servlet在web.xml中配置:
</web-app>
 ........... 
 servlet>
   <servlet-name>log4j-init</servlet-name>
   <servlet-class>example.Log4jInit</servlet-class>
   <init-param>
      <param-name>log4j</param-name>
      <param-value>WEB-INF/log4j.properties</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>
 ........... 
</web-app>

用来配置log4J的属性文件:
log4j.rootLogger=debug, A1 , R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
 这个配置文件指定了两个输出源A1和R。前者把日志信息输出到控制台,后者是一个轮转日志文件。最大的文

件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把example.log重命名为example.log.1,然后重建

一个新的 example.log文件,依次轮转。

测试文件test.jsp:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import="org.apache.log4j.*" %>
<%      
    Logger logger = Logger.getLogger("test.jsp");
    logger.debug("befor test");
%>
<h1>This is login test</h1>
<%  logger.info("after test");%>

PatternLayout的格式

%r    自程序开始后消耗的毫秒数
%t    表示日志记录请求生成的线程
%p    表示日志语句的优先级别
%c    日志信息所在的类名
%m%n    表示日志信息的内容
%r    自应用启动到输出该log信息耗费的毫秒数
%d    日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l    日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

Spring 中log4j配置
<context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>WEB-INF/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>

文件保存的地方
log4j.appender.R.File=${webapp.root}/logs/chengchuang.log

log4j在web中的使用相关推荐

  1. 如何在log4j.properties文件中使用相对路径

    来源:http://hi.baidu.com/eredlab/blog/item/f6c1a5efe44a1af9cf1b3e17.html 写在最前面: log4j是一个应用非常广泛的Java日志组 ...

  2. 怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨...

    2019独角兽企业重金招聘Python工程师标准>>> 从最初学习使用log4j的时候,网上和书本上主要都是使用"log4j.properties"这种属性格式, ...

  3. HTML5 Web app开发工具Kendo UI Web中图像浏览器的使用

    2019独角兽企业重金招聘Python工程师标准>>> Kendo UI Web中的图像浏览器在默认的情况下会打开一个简单的对话框,如下图所示,方便用户键入或者是粘贴图片的URL以及 ...

  4. 解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了

    解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了 2011-11-22 16:48        by        通用信息化建设平台,        1471       ...

  5. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  6. Web中的积累:外观模式 Facade

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 壹 前言 目测好久没写文章了,距离上一篇文章也有二十多天.我是怎么了?哈 ...

  7. HTML5 Web app开发工具Kendo UI Web中Grid网格控件的使用

    Kendo UI Web中的Grid控件不仅可以显示数据,并对数据提供了丰富的支持,包括分页.排序.分组.选择等,同时还有着大量的配置选项.使用Kendo DataSource组件,可以绑定到本地的J ...

  8. part.write java_小白向:web中利用request.getPart()上传文件到服务器

    被文件上传弄得焦头烂额的一天,果然web中的路径和各种设置真的好讨厌= = 下面是超级小白的.及其简约的"详"解 1.明确目的: 用户将 1.txt 文件 上传到 服务器(web工 ...

  9. 模拟Spring如何在WEB中运行

    Spring在web中配置和普通的Java程序中有所区别,总结一下主要表现在以下几个方面: ①jar包不同,需要引入两个web的jar包 ②需要考虑IOC容器创建的时间 非 WEB 应用在 main ...

最新文章

  1. 青龙面板修改端口教程避开5700更安全
  2. xml相关php函数,PHP利用xml常用函数的详细集合示例
  3. 甘肃省智慧教育云平台实名认证_“好分数”甘肃行,人工智能助力教育均衡
  4. Linux 服务器安全加固 10条建议
  5. 用C#实现图片数据库存储与显示
  6. getHibernateTemplate() VS getSession()
  7. 三位深度学习之父共获2019年图灵奖,学术人生令人赞叹!!!
  8. 孙玄:微服务架构中分布式事务实现方案如何取舍
  9. 抖音怎么知道自己上热门 抖音是靠md5识别视频的
  10. verilog语法错误
  11. spring读取外部文件+SpEL
  12. Matlab绘制Sigmod、Tanh、ReLU
  13. 计算机技术实验报告答案,大学计算机实验报告答案-实验1.docx
  14. ZYNQ 7000 USB HS启动流程和工作方式
  15. 无人机项目跟踪详解七十——升压电路及LM27313详解
  16. 小老板生意总是做不大,而真正老板只做三件事
  17. PM1200手持无线电综合测试仪
  18. FidBugs的使用学习
  19. 达梦数据库建新用户及注意事项
  20. 提示 api-ms-win-crt-runtime-l1-1-0.dll丢失 ivms-4200 安装好运行报错api-ms-win-crt-runtime-|1-1-0.dll

热门文章

  1. (淘宝无限适配)手机端rem布局详解(转载非原创)
  2. HDU2031 进制转换
  3. 关于AE大数据点文件读取生成SHP文件时使用IFeatureBuffer快速提高读取效率
  4. 【报告分享】2021中国数据智能产业发展研究报告.pdf(附下载链接)
  5. python paramiko_Python3之paramiko模块
  6. android switch自定义样式,Android自定义Switch样式
  7. 函数二的变量作用域,多函数执行,返回值,函数参数,拆包,引用
  8. 数学建模 TOPSIS法
  9. throw与throws
  10. java接口自动化(二) - 接口测试的用例设计