我这儿有两个程序,一个是普通的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(" "); } System.out.println(""); } logger.info("Exiting application."); }
log4j的配置文件log4j.inf的内容如下:
log4j.rootLogger=WARN, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.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 formatlog4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize=100KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.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/目录下,增加如下红色部分。
</web-app> ........... <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></web-app>
同时,在这个目录下建一个文件名叫log4j.properties,内容如下:
log4j.rootLogger=INFO, A1 , Rlog4j.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.RollingFileAppenderlog4j.appender.R.File=$TOMCAT_HOME/webapps/dbweb/logs/log4j.log<----将$TOMCAT_HOME换成tomcat的安装目录log4j.appender.R.MaxFileSize=100KBlog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.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文件中,在文件的最后也应看到上述的输出。
Posted by Hilton at August 27, 2003 10:59 PM
一、九九表。
环境设置:需要将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(" "); } System.out.println(""); } logger.info("Exiting application."); }
log4j的配置文件log4j.inf的内容如下:
log4j.rootLogger=WARN, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.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 formatlog4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize=100KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.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/目录下,增加如下红色部分。
</web-app> ........... <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></web-app>
同时,在这个目录下建一个文件名叫log4j.properties,内容如下:
log4j.rootLogger=INFO, A1 , Rlog4j.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.RollingFileAppenderlog4j.appender.R.File=$TOMCAT_HOME/webapps/dbweb/logs/log4j.log<----将$TOMCAT_HOME换成tomcat的安装目录log4j.appender.R.MaxFileSize=100KBlog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.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文件中,在文件的最后也应看到上述的输出。
Posted by Hilton at August 27, 2003 10:59 PM