[原创]web应用中log4j的初始化配置
2006-02-27 11:08
363 查看
在普通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的配置文件中,进行相应修改:
<param name="File" value="${webapp.root}/WEB-INF/logs/test.log " /><!--将log文件放到项目相对目录中-->
(the end)
本文参考了CSDN文章:http://dev.csdn.net/develop/article/81/81782.shtm
<?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的配置文件中,进行相应修改:
<param name="File" value="${webapp.root}/WEB-INF/logs/test.log " /><!--将log文件放到项目相对目录中-->
(the end)
本文参考了CSDN文章:http://dev.csdn.net/develop/article/81/81782.shtm
相关文章推荐
- Web应用中Log4j与JNDI结合1 -- JNDI指定配置文件
- web项目中log4j的配置和应用
- jboss下通过配置log4j.xml实现web应用的日志
- java Web应用配置log4j日志记录
- 使用web.xml配置Web应用之初始化和预加载servlet和JSP页面
- jboss下通过配置log4j.xml实现web应用的日志 (zt)
- 缺省配置Springboot Web应用运行中DispatchServlet的初始化
- jboss下通过配置log4j.xml实现web应用的日志
- java Web应用配置log4j日志记录
- 【原创】ASP.NET Web 应用开发实战快速上手系列 1——配置环境及预备知识(框架、VS、C#)
- log4j和web.xml配置webAppRootKey 的问题(一个tomcat下部署多个应用)
- java Web应用配置log4j日志记录
- 在Web应用中利用Spring配置log4j
- web应用的log4j配置
- java Web应用配置log4j日志记录
- 软件开发工程师(JAVA)中级考试大纲-----四(四)Log4J的原理及配置;Log4J常用的API;在项目中应用日志框架Log4J关键类和接口介绍;Java properties配置文件log
- Tomcat 7.0的配置及发布多个web应用以及不同端口多工程配置(第二版)
- WEB服务器应用_服务器安全设置之_服务器安全和性能配置
- 【Spring】初始化Spring IoC容器(非Web应用),并获取Bean
- 用Java缓存机制创建更快的Web应用----简介和配置