log4j--使用servlet

实现

package com.rsl.log.servlet;

import org.apache.log4j.Logger;
import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.PropertyConfigurator;

public class initlog4j extends HttpServlet {
    
    public initlog4j() {
        super();
        }
    private static final String content_type = "text/html; charset=gbk";
    public static String context_path="";
//private static Logger logger = Logger.getLogger(initlog4j.class.getName());
@Override
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
    System.out.println("22");
    Logger logger=Logger.getRootLogger();
    logger.debug("nihaoBug");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
        throws ServletException, IOException {

}
    public void init() throws ServletException {
     // put your code here
     ServletContext sct=getServletContext();
     String prefix = sct.getRealPath("/");
     context_path=prefix;
     //log4j 配置文件存放目录
     System.out.println("[....log4j]: the root path: " + prefix);
     System.out.println("[....log4j]: initservlet init start...");
     String file = getInitParameter("log4j");
     //log4j 配置文件
     if (file != null) {
  /* 如果此处没有配置log4j.properties文件,那么默认加载classPath下的配置文件*/
/*默认的/WEB-INF/classes下*/
PropertyConfigurator.configure(prefix
+ "\\"+file); System.out.println("[....log4j]:property file's full name is :"+prefix + file); //根据配置初始化log4j } System.out.println("[....log4j]: initservlet init sucess..."); } }

 WEB配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <servlet>
    <servlet-name>initlog4j</servlet-name>
    <servlet-class>com.rsl.log.servlet.initlog4j</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-mapping>
    <servlet-name>initlog4j</servlet-name>
    <url-pattern>/servlet/initlog4j</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>com.rsl.log.servlet.Test</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/servlet/test</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

测试servlet

public class Test extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("11");
       // Logger logger=Logger.getRootLogger();
        Logger logger = Logger.getLogger(Test.class.getName());
        logger.debug("111");
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }
}

配置文件可以放在classpath中也可以自己定义

一,输出到d盘,形成一个html文件

log4j.rootLogger=debug,appender1,appender2
log4j.appender.appender1=org.apache.log4j.FileAppender
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
log4j.appender.appender1.File=D://java0.html
log4j.appender.appender2=org.apache.log4j.ConsoleAppender
#\u5236\u5B9A\u5E03\u5C40\u6837\u5F0F  custom 
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=%r [%t] -%l %p %d{yyyy-MM-dd HH:mm:ss} %n

二,

log4j.rootLogger=debug, stdout, r
#log4j.rootlogger=error, stdout, r
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# pattern to output the caller's file name and line number.
#log4j.appender.stdout.layout.conversionpattern=%5p [%t] (%f:%l) - %m%n
log4j.appender.stdout.layout.ConversionPattern=%5p [%d{yyyy-mm-dd hh:mm:ss}] (%f:%l) - %m%n
#r
log4j.appender.r=org.apache.log4j.RollingFileAppender
#log4j.appender.r.file=/usr/ibm/websphere/appserver/profiles/appsrv01/installedapps/loopbacknode01cell/policeweb_war.ear/policeweb.war/web-inf/logs/police.log
#log4j.appender.r.file==${webapp}\\logs\\police.log
#log4j.appender.r.file==../logs/police.log
log4j.appender.r.File=D\:\\o111111111a.log
log4j.appender.r.MaxFileSize=1024kb
# keep one backup file
log4j.appender.r.MaxBackupIndex=10
log4j.appender.r.layout=org.apache.log4j.PatternLayout
log4j.appender.r.layout.ConversionPattern=%5p [%d{yyyy-mm-dd hh:mm:ss}] (%f:%l) - %m%n

# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n


log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.encoding=UTF-8
log4j.appender.logfile.File=d\:\\qrc.log
log4j.appender.logfile.MaxFileSize=5MB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
#log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout=cn.com.canon.qrc.log.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

d上边的红色字体,为自定义的模式

import org.apache.log4j.helpers.PatternParser;

public class PatternLayout extends org.apache.log4j.PatternLayout {

    protected PatternParser createPatternParser(String pattern) {
        try {
            pattern = new String(pattern.getBytes("iso-8859-1"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return super.createPatternParser((pattern));
    }

}

 

 

posted on 2013-02-26 11:10  FanRongOS  阅读(1522)  评论(0)    收藏  举报