`

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 " />

 

分享到:
评论

相关推荐

    log4j初始化

    ### log4j初始化详解 #### 引言 `log4j`是一款开源的日志记录工具,广泛应用于Java应用程序中,用于记录程序运行时的各种信息,包括错误、警告、信息等不同级别的日志。其强大的配置功能和灵活性使得开发人员能够...

    log4j.properties配置详解

    3. **通过环境变量传递配置文件名**:利用Log4j默认的初始化过程进行解析和配置。 4. **通过应用服务器配置传递配置文件名**:利用一个特殊的servlet来完成配置。 #### 六、为不同的Appender设置日志输出级别 在...

    tomcat下的log4j日志配置

    本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,并着重介绍第二种方法的具体步骤。 #### 一、Tomcat 级别的统一日志管理 这种方法适用于希望对整个 Tomcat ...

    log4j中配置日志文件相对路径方法(PDF)

    #### 方法三:通过Servlet初始化配置 在Web应用中,还可以利用Servlet容器的特性,通过Servlet的初始化过程来动态设置日志文件的路径。这种方式更为灵活,能够根据实际部署环境的特点进行定制化的配置。 ##### 示例...

    Log4j 相对路径配置

    首先,在`Web.xml`文件中,我们需要进行一些配置来使Log4j在Web应用启动时初始化。`&lt;context-param&gt;`标签用于设置Log4j的相关参数: 1. `&lt;param-name&gt;webAppRootKey&lt;/param-name&gt;` 和 `&lt;param-value&gt;webApp.root...

    Log4j日志配置说明,Log4j日志配置说明

    这个 Servlet 的作用是在应用启动时读取配置文件并初始化 Log4j。具体步骤如下: ```java package ttzl.log.web; import javax.servlet.http.HttpServlet; import org.apache.log4j.PropertyConfigurator; public...

    Spring项目中怎么配置log4j

    最后,为了使Spring与log4j集成,我们需要在`web.xml`(对于Web应用)或`context.xml`(对于非Web应用)中引入log4j的初始化参数,确保在应用启动时加载log4j配置: ```xml &lt;param-name&gt;log4jConfigLocation ...

    log4j的详细配置

    4. 在应用服务器中配置Log4J,例如在Tomcat中通过`WEB-INF/classes/log4j.properties`或`WEB-INF/classes/log4j.xml`文件。 通过以上配置,你可以根据需求定制日志系统,满足不同级别的信息记录、不同的输出目的地...

    Log4j的配置与使用

    这种方式非常适合在Web应用中集成Log4j。 ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; ...

    log4j详细配置说明

    - **配置 web.xml**:在应用的 `web.xml` 文件中添加以下配置,以便在启动时加载 Log4j: ```xml &lt;listener-class&gt;com.apache.jakarta.log4j.Log4jInit&lt;/listener-class&gt; ``` 其中 `&lt;init-param&gt;` 用于指定...

    JBOSS log4j 配置

    3. 建立一个用于初始化的 InitServlet,在 init 方法指定 log4j 读取应用程序下的 log4j.properties 文件。 4. 把 jboss 的 jboss-common.jar($JBOSS-HOME/lib 目录下)复制到应用程序/WEB-INF/lib 目录下。 Log4j ...

    tomcat下struts2的log4j日志配置.doc

    3. 在J2EE应用的`web.xml`中配置Log4j初始化。 4. 如果需要,还可以在Struts2配置文件中调整框架级别的日志行为。 通过灵活配置Log4j,开发人员可以有效地监控应用状态,定位问题,同时避免不必要的日志输出对性能...

    Log4j在web和控制台应用程序的使用

    在web应用中,通常会将Log4j配置文件(log4j.properties或log4j.xml)放在类路径下,以便在web容器启动时自动加载。通过在代码中创建Logger实例,开发者可以方便地记录请求处理、数据库操作等各种日志信息。 然后,...

    maven+springmvc+mybatis+log4j框架搭建

    本教程将详细阐述如何使用四个关键组件——Maven、SpringMVC、MyBatis和Log4j——来搭建一个强大的Web应用框架,旨在提高开发效率并优化项目管理。 **Maven** 是一个流行的项目管理和综合工具,它通过统一的构建...

    Java中Log4j 2日志框架的压缩包,版本是-2.23.0

    - **Configurator**:负责读取和应用配置,初始化Log4j。 3. **配置示例** - **XML配置**: ```xml [%t] %-5level %logger{36} - %msg%n"/&gt; ``` - **JSON配置**: ```json { ...

    0积分:完全相对路径的log4j配置

    通过`config.getInitParameter("log4j_properties")`读取初始化参数中的配置文件路径。 - **加载配置文件**:`PropertyConfigurator.configure(properties)` 使用`PropertyConfigurator`类加载配置文件。 #### ...

    log4j学习

    4. **Web应用配置**:在Web应用中,确保`commons-logging.properties`位于`WEB-INF/classes/`目录下,`log4j.properties`则可以放在`WEB-INF/`目录下,并在`web.xml`中配置Log4j初始化参数,以便Tomcat能找到并加载...

    log4j日志文件配置

    在JSP应用中,你可以通过初始化servlet来设置和使用log4j。在servlet的`init()`方法中加载配置文件,并获取logger实例。例如: ```java import org.apache.log4j.Logger; import org.apache.log4j....

    log4j使用笔记

    #### 四、log4j 配置详解 1. **配置文件**: - `log4j.properties` 或 `log4j.xml` 文件用于定义 log4j 的配置规则。 - 配置文件通常放置在项目的根目录或者类路径下。 - 如果未指定配置文件的位置,则 log4j 会...

    使用log4j写日志文件

    这里通过`getInitParameter`获取Web应用中的初始化参数,通常是log4j配置文件的路径,然后调用`PropertyConfigurator.configure()`方法加载配置。 #### 在IDE中使用Log4j 对于在IDE中开发的应用,可以直接在代码中...

Global site tag (gtag.js) - Google Analytics