`
favor
  • 浏览: 144004 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

log4j的xml输出配置

阅读更多
原来一直使用log4j.properties,发现它比properties功能强大,可以配置输出多个log文件。

log4j 有两种配置方法,大家熟知的是properties文件但是最近的项目实施中,每次去用户那里装系统,都要苦恼于log文件放在不同位置,要改property文件就要重打jar包,麻烦的紧。而如果采用 xml配置的方法,直接放在WEB-INFO下,要修改路径,很方便。查了些资料,终于把系统的log4j改成在xml中配置啦。

附:log4j的API http://logging.apache.org/log4j/docs/api/index.html
log4i.xml 文件
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 <appender name="FILE"
  class="org.apache.log4j.RollingFileAppender">
  <!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->
  <param name="File" value="D:/zhaotj/all.output.log" /><!-- 设置File参数:日志输出文件名 -->
  <param name="Append" value="true" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
  <param name="MaxBackupIndex" value="10" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /><!-- 设置输出文件项目和格式 -->
  </layout>
 </appender>

 <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
                <!-- 设置监视器输出方式 -->
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern"
    value="%-4r [%t] %-5p %c %x - %m%n" />
  </layout>
                <!--滤镜设置输出的级别-->
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="levelMin" value="info" />
   <param name="levelMax" value="info" />
   <param name="AcceptOnMatch" value="true" />
  </filter>
 </appender>

 <root><!-- 设置接收所有输出的通道 -->
  <priority value="info" />
  <appender-ref ref="FILE" /><!-- 与前面的通道id相对应 -->
  <appender-ref ref="STDOUT" />
 </root>

</log4j:configuration>

建好xml文件后 要写一个servlet类继承actionservlet,当工程初始化时自动加载xml配置文件
package com.asiainfo;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.struts.action.ActionServlet;

public class ExtendedActionServlet extends ActionServlet {
        private Log log = LogFactory.getLog(this.getClass().getName());

        public ExtendedActionServlet() {}

        public void init() throws ServletException {
            log.info(
                    "Initializing, My MyActionServlet init this System's Const Variable");
            String prefix = this.getServletConfig().getServletContext().getRealPath(
                    "/");//读取项目的路径
            String file = this.getServletConfig().getInitParameter("log4j");
                       //读取log4j相对路径
            String filePath = prefix + file;
            DOMConfigurator.configure(filePath);//加载.xml文件      
            log.info("Initializing, end My Init");
            super.init();//应用了struts,此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作
        }
}

我们可以看到 在此类中 用了相对路径来加载xml的方法,首先通过prefix 读取了项目的路径然后再通过读取web.xml中的log4j变量,获得log4j.xml的相对路径 两者结合 就是他的绝对路径拉
最后在web.xml中配置action信息 就可以实现加载啦
web.xml
     
<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>
   com.asiainfo.ExtendedActionServlet
  </servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>

  <!-- tsExtend  -->
  <init-param>
   <param-name>config/tsextend</param-name><!--设备检测子模块-->
   <param-value>
    /WEB-INF/tsextend/struts-config.xml
   </param-value>
  </init-param>
                <init-param>
   <param-name>log4j</param-name><!--log4j.xml的路径-->
   <param-value>
    /WEB-INF/log4j.xml
   </param-value>
  </init-param>
  <init-param>
   <param-name>info</param-name>
   <param-value>3</param-value>
  </init-param>
  <init-param>
   <param-name>detail</param-name>
   <param-value>3</param-value>
  </init-param>
  <load-on-startup>0</load-on-startup><!--设置当工程初始时便执行-->
 </servlet>

 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>

依据各个级别的日志输出到不同文件

log4j支持这个功能,不过不能再使用Properties配置,必须使用XML

建一个log4j.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= "STDOUT "   class= "org.apache.log4j.ConsoleAppender ">
<layout   class= "org.apache.log4j.PatternLayout "/>
</appender>
<appender   name= "DEBUG "   class= "org.apache.log4j.RollingFileAppender ">
<param   name= "File "   value= "debug.log "/>
<param   name= "Append "   value= "true "/>
<param   name= "MaxFileSize "   value= "500KB "/>
<param   name= "MaxBackupIndex "   value= "2 "/>
<layout   class= "org.apache.log4j.PatternLayout "/>
<filter   class= "org.apache.log4j.varia.LevelRangeFilter ">
<param   name= "LevelMax "   value= "DEBUG "   />
<param   name= "LevelMin "   value= "DEBUG "   />
</filter>
</appender>
<appender   name= "INFO "   class= "org.apache.log4j.RollingFileAppender ">
<param   name= "File "   value= "info.log "/>
<param   name= "Append "   value= "true "/>
<param   name= "MaxFileSize "   value= "500KB "/>
<param   name= "MaxBackupIndex "   value= "2 "/>
<layout   class= "org.apache.log4j.PatternLayout "/>
<filter   class= "org.apache.log4j.varia.LevelRangeFilter ">
<param   name= "LevelMax "   value= "INFO "   />
<param   name= "LevelMin "   value= "INFO "   />
</filter>
</appender>
<root>
<appender-ref   ref= "STDOUT "/>
<appender-ref   ref= "DEBUG "/>
<appender-ref   ref= "INFO "/>
</root>
</log4j:configuration>


代码中DOMConfigurator.configure( "log4j.xml ");


这样就可以在log.debug和log.info时分别打印到不同文件中,如果你还需要更多的文件,可以复制多几次appender就可以了
分享到:
评论
1 楼 linkgo 2009-01-15  
   

相关推荐

    Log4j2学习log4j2.xml配置模板

    *灵活的配置:Log4j2 提供了非常灵活的配置机制,可以根据需要定义不同的日志级别、输出格式和文件名等属性。 *高性能:Log4j2具有非常高的性能,可以handle大量的日志信息。 *灵活的appender:Log4j2 提供了多种...

    Log4J配置实例(xml格式)

    Log4J的XML配置文件通常以`log4j.xml`或`logging.xml`为名,它们定义了日志的输出级别、目的地、布局格式以及附加的配置参数。 ### 1. 日志级别 Log4J支持多种日志级别,包括`DEBUG`、`INFO`、`WARN`、`ERROR`和`...

    log4j与web.xml的配置

    本文将详细讲解如何将Log4j整合到Web应用并通过web.xml进行配置,以实现日志信息的输出和管理。 1. **Log4j介绍** - Log4j由Apache软件基金会开发,提供了一种简单但功能强大的日志记录API,可以控制日志信息的...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    log4j的详细配置,log4j.xml和log4j.properties,日志输出到文件,邮件,数据库,控制台等

    Log4j提供了多种配置方式,其中最常用的有两种:XML格式的`log4j.xml`和properties格式的`log4j.properties`。接下来,我们将深入探讨如何通过这两种配置文件来设置日志输出的目标、级别以及格式。 1. **XML配置** ...

    log4jxml详细分析 例子全

    `log4j.xml`配置文件主要用于定义日志的输出方式,包括日志级别、日志信息的格式、日志输出的目标等。以下是对给定部分`log4j.xml`配置文件的详细解析: 1. **Appender配置**:Appender是日志输出目的地的抽象概念...

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

    除了使用`log4j.properties`文件外,还可以通过XML文件来配置日志文件的路径。与`properties`文件类似,XML文件也支持变量的使用。 ##### 示例配置 ```xml &lt;appender name="logfile" class="org.apache.log4j....

    log4j2.xml记录日志到到数据库

    1. **配置文件**:如`log4j2.xml`,这是Log4j2的配置中心,定义了日志记录的策略、级别、输出目标等。 2. **日志记录器(Logger)**:负责收集和处理日志事件。 3. **日志级别(Level)**:如`TRACE`, `DEBUG`, `...

    log4j配置 输出日志 案例

    Log4j的配置主要通过一个XML或.properties文件进行,通常命名为log4j.properties或log4j.xml。以下是一个基本的log4j.properties配置示例: ```properties # 设置根日志器的级别为DEBUG log4j.rootLogger=DEBUG, ...

    SpringBoot框架配置log4j和log4j2的配置代码

    2. **配置文件**:创建`log4j.properties`或`log4j.xml`文件,定义日志级别和输出目的地。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, stdout, file log4j.appender.stdout=org.apache....

    log4j xmlweb最佳配置备份

    根据提供的文件信息,我们可以深入探讨Log4j框架的配置与最佳实践。Log4j是一个流行的Java日志框架,被广泛应用于各种规模的应用程序中。它提供了灵活的日志记录功能,可以方便地定制日志级别、格式及输出目标等。...

    log4j.xml文件的配置文.pdf

    本文将深入探讨如何通过配置`log4j.xml`文件来控制日志输出,特别是在JBOSS环境下针对Hibernate的日志输出进行优化。 #### 二、Log4j与Hibernate日志控制 ##### 1. 日志输出过多的问题 在JBOSS环境中运行应用程序...

    log4j配置和加载方法

    使用`DOMConfigurator.configure("path/to/log4j.xml")`来加载`.xml`配置文件。 在示例代码中,`import org.apache.log4j.Logger;`、`import org.apache.log4j.PropertyConfigurator;`、`import org.apache.log4j....

    log4j(二):动态配置日志输出路径

    在Web应用中,如使用的是Servlet环境,可以通过在`web.xml`中配置`ContextLoaderListener`来加载Log4j配置,同时,我们还可以创建一个Servlet,当接收到特定请求时,更新Log4j配置。 ```xml &lt;!-- web.xml 示例 --&gt; ...

    Log4j将System.out搞到log4j中输出四

    在《Log4j将System.out搞到log4j中输出四》这篇博文中,作者可能详细讨论了这些步骤,并可能分享了一些实战经验。通过学习这篇博文,读者可以更深入地了解如何在实际项目中实现这一转换,提升日志管理的效率。 总结...

    log4j实用配置扩展

    log4j的配置文件通常是`.properties`或`.xml`格式。以下是一个简单的配置示例: ```properties # 设置全局的日志级别为INFO log4j.rootLogger=INFO, stdout, file # 控制台输出配置 log4j.appender.stdout=org....

    tomcat下的log4j日志配置

    2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...

    log4j.jar及log4j.xml

    要在项目中使用Log4j,首先需要将`log4j.jar`添加到项目的类路径中,然后创建或引用`log4j.xml`配置文件。在代码中,通过以下方式创建和使用Logger: ```java import org.apache.log4j.Logger; public class ...

    使用xml或properties配置的log4j

    标题“使用xml或properties配置的log4j”指的是本文将探讨如何通过XML和properties文件这两种不同的格式来配置Log4j,这是一个广泛使用的Java日志记录框架。Log4j允许开发者控制应用程序的日志输出,包括级别、格式...

Global site tag (gtag.js) - Google Analytics