在普通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`是一款开源的日志记录工具,广泛应用于Java应用程序中,用于记录程序运行时的各种信息,包括错误、警告、信息等不同级别的日志。其强大的配置功能和灵活性使得开发人员能够...
3. **通过环境变量传递配置文件名**:利用Log4j默认的初始化过程进行解析和配置。 4. **通过应用服务器配置传递配置文件名**:利用一个特殊的servlet来完成配置。 #### 六、为不同的Appender设置日志输出级别 在...
本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,并着重介绍第二种方法的具体步骤。 #### 一、Tomcat 级别的统一日志管理 这种方法适用于希望对整个 Tomcat ...
#### 方法三:通过Servlet初始化配置 在Web应用中,还可以利用Servlet容器的特性,通过Servlet的初始化过程来动态设置日志文件的路径。这种方式更为灵活,能够根据实际部署环境的特点进行定制化的配置。 ##### 示例...
首先,在`Web.xml`文件中,我们需要进行一些配置来使Log4j在Web应用启动时初始化。`<context-param>`标签用于设置Log4j的相关参数: 1. `<param-name>webAppRootKey</param-name>` 和 `<param-value>webApp.root...
这个 Servlet 的作用是在应用启动时读取配置文件并初始化 Log4j。具体步骤如下: ```java package ttzl.log.web; import javax.servlet.http.HttpServlet; import org.apache.log4j.PropertyConfigurator; public...
最后,为了使Spring与log4j集成,我们需要在`web.xml`(对于Web应用)或`context.xml`(对于非Web应用)中引入log4j的初始化参数,确保在应用启动时加载log4j配置: ```xml <param-name>log4jConfigLocation ...
4. 在应用服务器中配置Log4J,例如在Tomcat中通过`WEB-INF/classes/log4j.properties`或`WEB-INF/classes/log4j.xml`文件。 通过以上配置,你可以根据需求定制日志系统,满足不同级别的信息记录、不同的输出目的地...
这种方式非常适合在Web应用中集成Log4j。 ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; ...
- **配置 web.xml**:在应用的 `web.xml` 文件中添加以下配置,以便在启动时加载 Log4j: ```xml <listener-class>com.apache.jakarta.log4j.Log4jInit</listener-class> ``` 其中 `<init-param>` 用于指定...
3. 建立一个用于初始化的 InitServlet,在 init 方法指定 log4j 读取应用程序下的 log4j.properties 文件。 4. 把 jboss 的 jboss-common.jar($JBOSS-HOME/lib 目录下)复制到应用程序/WEB-INF/lib 目录下。 Log4j ...
3. 在J2EE应用的`web.xml`中配置Log4j初始化。 4. 如果需要,还可以在Struts2配置文件中调整框架级别的日志行为。 通过灵活配置Log4j,开发人员可以有效地监控应用状态,定位问题,同时避免不必要的日志输出对性能...
在web应用中,通常会将Log4j配置文件(log4j.properties或log4j.xml)放在类路径下,以便在web容器启动时自动加载。通过在代码中创建Logger实例,开发者可以方便地记录请求处理、数据库操作等各种日志信息。 然后,...
本教程将详细阐述如何使用四个关键组件——Maven、SpringMVC、MyBatis和Log4j——来搭建一个强大的Web应用框架,旨在提高开发效率并优化项目管理。 **Maven** 是一个流行的项目管理和综合工具,它通过统一的构建...
- **Configurator**:负责读取和应用配置,初始化Log4j。 3. **配置示例** - **XML配置**: ```xml [%t] %-5level %logger{36} - %msg%n"/> ``` - **JSON配置**: ```json { ...
通过`config.getInitParameter("log4j_properties")`读取初始化参数中的配置文件路径。 - **加载配置文件**:`PropertyConfigurator.configure(properties)` 使用`PropertyConfigurator`类加载配置文件。 #### ...
4. **Web应用配置**:在Web应用中,确保`commons-logging.properties`位于`WEB-INF/classes/`目录下,`log4j.properties`则可以放在`WEB-INF/`目录下,并在`web.xml`中配置Log4j初始化参数,以便Tomcat能找到并加载...
在JSP应用中,你可以通过初始化servlet来设置和使用log4j。在servlet的`init()`方法中加载配置文件,并获取logger实例。例如: ```java import org.apache.log4j.Logger; import org.apache.log4j....
#### 四、log4j 配置详解 1. **配置文件**: - `log4j.properties` 或 `log4j.xml` 文件用于定义 log4j 的配置规则。 - 配置文件通常放置在项目的根目录或者类路径下。 - 如果未指定配置文件的位置,则 log4j 会...
这里通过`getInitParameter`获取Web应用中的初始化参数,通常是log4j配置文件的路径,然后调用`PropertyConfigurator.configure()`方法加载配置。 #### 在IDE中使用Log4j 对于在IDE中开发的应用,可以直接在代码中...