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)); } }
浙公网安备 33010602011771号