Log4J 学习笔记(3)

来源:互联网 发布:linux memmap 编辑:程序博客网 时间:2024/04/30 08:30
我这儿有两个程序,一个是普通的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/目录下,增加如下红色部分。
</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 , 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文件中,在文件的最后也应看到上述的输出。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 顺产底下外阴红肿伤口流脓怎么办 产后便秘怎么办什么方法最有效 一周岁宝宝拉肚怎么办 三岁宝宝拉水怎么办 喝了过期的青汁怎么办 吃了黑心的苹果怎么办 新生儿两天没拉大便怎么办 贝亲奶瓶不漏怎么办 满月婴儿吃多了怎么办 婴儿吃撑了哭闹怎么办 新生儿吃撑了怎么办啊 新生儿吃了奶粉不吃奶怎么办 新生儿不吃奶也不吃奶粉怎么办 奶瓶吸奶费力不顺畅怎么办 宝宝吃奶粉太勤怎么办 香蕉和地瓜一起吃了怎么办 贝亲奶瓶泡沫多怎么办 四个多月的宝宝拉肚子怎么办 宝宝四个月了拉肚子怎么办 四个月宝宝火大怎么办 刚出生的宝宝便秘怎么办 小宝宝破腹产吸了几口羊水怎么办 换奶粉不拉屎了怎么办 婴儿吃奶粉不拉屎怎么办 1岁半突然不喝奶怎么办 6个月宝宝不吃奶粉怎么办 7个月宝宝不吃奶粉怎么办 5个月宝宝不吃奶粉怎么办 一岁两个月宝宝不长肉怎么办 7个月宝宝肚子疼怎么办 奶喝一半凉了怎么办 5个月孩子厌奶怎么办 怀孕后特别不爱吃水果怎么办 宝宝吃了无比滴怎么办 婴儿上火怎么办吃什么可以去火 肚子胀怎么办最快的方法 40天婴儿拉水怎么办 8个月宝宝坐不稳怎么办 宝宝段奶不吃奶粉怎么办 3个月宝宝头睡偏了怎么办 2个月婴儿抱着睡怎么办