`

web应用中log4j的初始化配置

阅读更多

在普通web项目中,可以书写如下xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

 <appender name="file.log" class="org.apache.log4j.RollingFileAppender">
<!-- 这里必须用绝对路径(或相对于tomcat的路径) -->
  <param name="File" value="c:\logs\myweb.log" />
  <param name="Append" value="false" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%C:%M()]-[%p] %m%n" />
  </layout>
 </appender>

 <appender name="console.log" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%5p  (%F:%L) - %m%n" />
  </layout>
 </appender>

 <!--这里的name是要打印的包名,这里表示将org.woden模块中(包括子模块)的中间信息全部打印-->
 <logger name="org.woden" additivity="false">
  <level value="DEBUG" />
  <appender-ref ref="console.log" />
  <appender-ref ref="file.log " />
 </logger>

 <!--这里root配置成fatal级别是防止打印出框架中的中间信息(解决了打印struts中间信息的问题)-->
 <root>
  <level value="FATAL" />
  <appender-ref ref="console.log" />
  <appender-ref ref="file.log " />
 </root>
</log4j:configuration>

 

然后自己写一个Servlet,命名为Log4jInit,代码如下:

package org.woden.controller.servlet;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.xml.DOMConfigurator;

public class Log4jInit extends HttpServlet {
 public void init(ServletConfig config) throws ServletException {
  super.init(config);
  String prefix = getServletContext().getRealPath("/");
  String file = getInitParameter("log4j"); 
  System.out.println("--------  Log4J Start  --------- ");
  if (file != null) {
   DOMConfigurator.configure(prefix + file);
  }
 }

 protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
 }
}

 

 

然后在web.xml中配置Servlet启动:

 <servlet>
  <servlet-name>MyLog4jInit</servlet-name>
  <servlet-class>org.woden.controller.servlet.Log4jInit</servlet-class>
  <init-param>
   <param-name>log4j</param-name>
   <param-value>WEB-INF/log4j.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

 

注意:启动级别最好设小点,表示更快启动.一些IDE一般把struts(Action)启动级别设成了3或2,最好把log4j的启动放到struts之前.

 

另外,在spring框架中对log4j进行了增强:
首先不需要自己写servlet来启动log4j,而是直接用spring的Log4jConfigListener监听器.这样做有几个好处,最大的好处就是不用重启web应用也可以改变log4j的级别(和策略).而且spring允许将log文件放到项目的相对目录中.

spring中在web.xml的配置语句如下:

<context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>WEB-INF/log4j.xml</param-value>
 </context-param>
 <context-param>
  <param-name>log4jRefreshInterval</param-name>
  <param-value>60000</param-value><!--60秒扫描一次-->
 </context-param>
 <listener>
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>

  

 

在log4j的配置文件中,进行相应修改:

<!--将log文件放到项目相对目录中-->

<param name="File" value="${webapp.root}/WEB-INF/logs/test.log " />

 

分享到:
评论

相关推荐

    ssh(structs,spring,hibernate)框架中的上传下载

     我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...

    example-spring-boot-embedded-felix:测试如何将Apache Felix嵌入到Spring Boot应用程序中

    将Spring默认日志记录配置为在资源中使用log4j2.xml 为Felix框架添加一种在内部环境中使用Spring引导属性的方法 费利克斯 创建FelixService作为Spring Service Component和ApplicationReadyEvent事件侦听器以对其...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    基于EXT SSI的简单树实现

    -- web应用启动时初始化applicationContext --&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;description&gt;spring初始配置 &lt;param-name&gt;contextConfigLocation ...

    Spring in Action(第二版 中文高清版).part2

    A.4 Spring与Log4j 附录B 用(和不用)Spring进行测试 B.1 测试简介 B.1.1 理解不同类型的测试 B.1.2 使用JUnit B.1.3 Spring在测试中的角色 B.2 单元测试Spring MVC控制器 B.2.1 模拟对象 B.2.2 断言...

    Spring in Action(第二版 中文高清版).part1

    A.4 Spring与Log4j 附录B 用(和不用)Spring进行测试 B.1 测试简介 B.1.1 理解不同类型的测试 B.1.2 使用JUnit B.1.3 Spring在测试中的角色 B.2 单元测试Spring MVC控制器 B.2.1 模拟对象 B.2.2 断言...

    springboot参考指南

    使用YAML或JSON配置Log4j2 vi. 67. 数据访问 i. 67.1. 配置一个数据源 ii. 67.2. 配置两个数据源 iii. 67.3. 使用Spring Data仓库 iv. 67.4. 从Spring配置分离@Entity定义 v. 67.5. 配置JPA属性 vi. 67.6. 使用...

    Spring 3 Reference中文

    4.5.4.1 初始化Web 配置.. 63 4.5.4.2 请求范围.. 64 ----------------------- Page 4----------------------- 4.5.4.3 会话范围.. 64 4.5.4.4 全局会话范围.. 65 4.5.4.5 各种范围的bean 作为...

    Spring Cloud Finchley SR2全套(集成Spring Gateway)

    .initialCacheNames(cacheNames) /* 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置 */ .withInitialCacheConfigurations(configMap).build(); return cacheManager; } 框架中...

    Spring in Action(第2版)中文版

    a.4spring与log4j 附录b用(和不用)spring进行测试 b.1测试简介 b.1.1理解不同类型的测试 b.1.2使用junit b.1.3spring在测试中的角色 b.2单元测试springmvc控制器 b.2.1模拟对象 b.2.2断言modelandview的内容...

    Maven权威指南 很精典的学习教程,比ANT更好用

    创建这个简单的Web应用 5.4. 配置Jetty插件 5.5. 添加一个简单的Servlet 5.6. 添加J2EE依赖 5.7. 小结 6. 一个多模块项目 6.1. 简介 6.1.1. 下载本章样例 6.2. simple-parent 项目 6.3. simple-...

    计算机应用技术(实用手册)

    这个项目可选择当系统开机时先行对AGP或是PCI插槽来做初始化的动作。 [AGP]:当系统开机时,它将会先对AGP插槽来做初始化的动作。 [PCI Slot]:当系统开机时,它将会先对PCI插槽来做初始化的动作。 AGP Data ...

    JVM参数设置详细说明

    指示只有在old generation在使用了初始化的比例后concurrent collector启动收集 3:others a: -XX:MaxTenuringThreshold= 指定一个object在经历了n次young gc后转移到old generation区,在linux64的java6下默认值是15...

    新版Android开发教程.rar

    HTC HTC HTC HTC Dream/G1 Dream/G1 Dream/G1 Dream/G1 具体配置 硬件 3.17 英寸 HVGA (480 x 320) ; 1150mAh 电池 ;高通 528Mhz 7201 处理器 ; 64MB RAM 、 128MB ROM ; 1GB MicroSD 卡 ; QWERTY 全键盘; 310...

    webx3框架指南PDF教程附学习Demo

    3.1. Webx的初始化 ........................................................................................ 24 3.1.1. 初始化级联的Spring容器 .............................................................

    Java学习笔记-个人整理的

    {1.10.2}数组变量的初始化}{34}{subsection.1.10.2} {1.10.3}数组对象的引用}{35}{subsection.1.10.3} {1.10.4}数组对象的复制}{35}{subsection.1.10.4} {1.10.5}扩充数组对象长度}{36}{subsection.1.10.5} {...

    网管教程 从入门到精通软件篇.txt

    INI:初始化文件;Mwave DSP Synth的“nwsynth.ini” GMS安装;Cravis Ultrasound bank安装 INP:Oracle 3.0版或早期版本的表单源代码 INRS:INRS远程通信声频 INS:InstallShield安装脚本;X-Internet签字文件;...

Global site tag (gtag.js) - Google Analytics