Log4J学习笔记(3)

我这儿有两个程序,一个是普通的java程序,实现了一个“九九表”;另一个是servlet。

我这儿用的tomcat是4.1.12,J2SE是1.3.1,log4j的版本是1.2.8.
一、九九表。
环境设置:需要将log4j-1.2.8.jar放入CLASSPATH变量中。
Hello.java文件的内容如下:

import org.apache.log4j.*;
public class Hello{
	static Logger logger = Logger.getLogger(Hello.class);
	public static void main(String[] args) {
	int i,j;
//	  BasicConfigurator.configure();
	  PropertyConfigurator.configure(args[0]);
 
      logger.info("Entering application.");
      for(i=1;i<10;i++){
	    logger.debug(""+i);
      	for (j=1;j<=i;j++){
      		logger.warn(""+j);
      		System.out.print(i*j);
      		System.out.print("\t");
      	}
      	System.out.println("");
    	}
      logger.info("Exiting application.");	  
}

log4j的配置文件log4j.inf的内容如下:

log4j.rootLogger=WARN, 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
# Print the date in ISO 8601 format
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
 
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
 
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
 
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
 
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

运行:

javac Hello.java
java Hello log4j.inf

结果会在屏幕上显示,并在example.log文件中记录。
二、servlet
环境设置:将log4j-1.2.8.jar及servlet.jar放入环境变量CLASSPATH中,并且要将log4j-1.2.8复制到$TOMCAT_HOME/common/lib目录下。
假定,有一个布署到tomcat的应用叫myweb。
servlet程序Log4jInit.java的位置在$TOMCAT_HOME/webapps/myweb/WEB-INF/classes/com/hedong/learning/log4j/目录下,内容如下:

package com.hedong.learning.log4j;
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);
        }
  }
public void doGet(HttpServletRequest req, HttpServletResponse res) {
  }
}

在Log4jInit.java所在目录下编译它:
javac Log4jInit.java

myweb的设置文件web.xml在$TOMCAT_HOME/webapps/myweb/WEB-INF/目录下,增加如下部分。

  <servlet>
    <servlet-name>log4j-init</servlet-name>
    <servlet-class>com.hedong.learning.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>

同时,在这个目录下建一个文件名叫log4j.properties,内容如下:

log4j.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=$TOMCAT_HOME/webapps/dbweb/logs/log4j.log<----将$TOMCAT_HOME换成tomcat的安装目录
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

记住,别忘了创建目录$TOMCAT_HOME/webapps/dbweb/logs/,如果它不存在的话。
创建目录$TOMCAT_HOME/webapps/dbweb/test/,然后在这个目录下新建一个文件test.jsp,内容如下:

<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import="org.apache.log4j.*" %>
<%
       Logger logger = Logger.getLogger("test.jsp");
       logger.info("befor say hi");
%>
<h1> Hi</h1>
<%
        logger.info("after say hi");
%>

然后,重新启动tomcat,通过浏览器访问这个jsp页面,如http://yourdomain.com:8080/myweb/test/test.jsp,如果一切正常,会看到一个大大的HI。然后,在服务器上的$TOMCAT_HOME/webapps/dbweb/logs/log4j.log文件中看到如下的信息:

INFO HttpProcessor[8080][4] test.jsp - befor say hi
INFO HttpProcessor[8080][4] test.jsp - after say hi

在默认的情况下,tomcat的屏幕输出被重定向到$TOMCAT_HOME/logs/catalina.out文件中,在文件的最后也应看到上述的输出。

分享到: 更多