log4j在web.xml怎么配置啊?还有那个文件输出的地方我要把它输出到工程目录下面,如何设置?哪位大哥大姐指教一下。

解决方案 »

  1.   

    常用log4j配置
    二、log4j.xml
    <?xml version="1.0" encoding="GB2312" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
    <!-- 设置通道ID:org.zblog.all和输出方式:org.apache.log4j.RollingFileAppender -->
       <param name="File" value="E:/study/log4j/all.output.log" /><!-- 设置File参数:日志输出文件名 -->
       <param name="Append" value="false" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
       <param name="MaxBackupIndex" value="10" /> 
       <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /><!-- 设置输出文件项目和格式 -->
       </layout>
    </appender>
    <appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
       <param name="File" value="E:/study/log4j/zhuwei.output.log" />
       <param name="Append" value="true" />
       <param name="MaxFileSize" value="10240" /> <!-- 设置文件大小 -->
       <param name="MaxBackupIndex" value="10" /> 
       <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
       </layout>
    </appender>
    <logger name="zcw.log"> <!-- 设置域名限制,即zcw.log域及以下的日志均输出到下面对应的通道中 -->
       <level value="debug" /><!-- 设置级别 -->
       <appender-ref ref="org.zblog.zcw" /><!-- 与前面的通道id相对应 -->
    </logger>
    <root> <!-- 设置接收所有输出的通道 -->
       <appender-ref ref="org.zblog.all" /><!-- 与前面的通道id相对应 -->
    </root>
    </log4j:configuration>
    三、配置文件加载方法:
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    import org.apache.log4j.xml.DOMConfigurator;
    public class Log4jApp {
       public static void main(String[] args) {
           DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加载.xml文件
           //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加载.properties文件
           Logger log=Logger.getLogger("org.zblog.test");
           log.info("测试");
       }
    }
    四、项目使用log4j
    在web 应用中,可以将配置文件的加载放在一个单独的servlet中,并在web.xml中配置该servlet在应用启动时候加载。对于在多人项目中,可以给每一个人设置一个输出通道,这样在每个人在构建Logger时,用自己的域名称,让调试信息输出到自己的log文件中。
    五、常用输出格式
    # -X号:X信息输出时左对齐;
    # %p:日志信息级别
    # %d{}:日志信息产生时间
    # %c:日志信息所在地(类名)
    # %m:产生的日志具体信息
    # %n:输出日志信息换行 
      

  2.   

    谢谢上面这位大哥,辛苦你了,你给了我很好的提示。不过还是没是一团雾水,我是想在web.xml怎么配?
      

  3.   

    web.xml配置: <servlet>
        <servlet-name>log4j-init</servlet-name>
        <servlet-class>com.log4j.Log4jInit</servlet-class>
        <init-param>
          <param-name>log4j</param-name>
          <param-value>WEB-INF/log4j.properties</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>初始化的servlet:
    /*
     * 创建日期 2006-7-26
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package com.log4j;/**
     * @author ray
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    import org.apache.log4j.*;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class Log4jInit extends HttpServlet {
    public void init() {
    String prefix =  getServletContext().getRealPath("/");
    String file = getInitParameter("log4j");
    // if the log4j-init-file is not set, then no point in trying
    System.out.println("................log4j start");
    if(file != null) {
    PropertyConfigurator.configure(prefix+file);
    System.out.println(prefix+file);
    }
    }
    public void doGet(HttpServletRequest req, HttpServletResponse res) {
    }
    }
      

  4.   

    a. web.xml
            add following code to web.xml
              <servlet>
        <servlet-name>log4j-init</servlet-name>
        <servlet-class>com.legendinfo.log.Log4jInit</servlet-class>
        <init-param>
          <param-name>log4j-init-file</param-name>
          <param-value>WEB-INF/classes/log4j.property</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
    b.create a special servlet for log4j initialazation
        save the file in the web-info/classes folder
    package com.legendinfo.log;
    import org.apache.log4j.PropertyConfigurator;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.PrintWriter;
    import java.io.IOException;
    public class Log4jInit extends HttpServlet {
      public void init() {
        String prefix =  getServletContext().getRealPath("/");
        String file = getInitParameter("log4j-init-file");
        // if the log4j-init-file is not set, then no point in trying
        if(file != null) {
          PropertyConfigurator.configure(prefix+file);
          System.out.println("Init Log4j success!");
        }
      }
      public void doGet(HttpServletRequest req, HttpServletResponse res) {
      }
    } c.create a log4j.property file that define the log4j properties
        the property file is setting in web.xml
        a sample property file as followinglog4j.rootLogger=INFO, A1 ,R
    log4j.appender.A1=org.apache.log4j.ConsoleAppender 
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
    log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n 
    log4j.appender.R=org.apache.log4j.RollingFileAppender 
    log4j.appender.R.File=../logs/log4j.log 
    log4j.appender.R.MaxFileSize=100KB 
    log4j.appender.R.MaxBackupIndex=1 
    log4j.appender.R.layout=org.apache.log4j.TTCCLayout
    d.a test Jsp page
        testLog.jsp:
    <%@ page import="org.apache.log4j.*"%>
    <html>
    <body>
    <%
       //log4j.appender.appenderName = WEB-INF/classes/log4j.log
       
       Logger  logger = Logger.getLogger("com.legendinfo");
       logger.setLevel(Level.INFO);
       Logger barlogger = Logger.getLogger("com.legendinfo.log");
       logger.warn("Low fuel level.");
       logger.debug("Starting search for nearest gas station.");
       barlogger.info("Located nearest gas station.");
       barlogger.debug("Exiting gas station search");
    %>
    </body>
    </html>
      

  5.   

    niuniuhuang  我测试过不行啊!