Log4J学习笔记(3)---(转)

原创 2004年07月19日 16:47:00

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/目录下,增加如下红色部分。

...........

log4j-init
com.hedong.learning.log4j.Log4jInit

log4j
WEB-INF/log4j.properties

1


同时,在这个目录下建一个文件名叫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");
%>

Hi


<%
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文件中,在文件的最后也应看到上述的输出。

Log4j不修改代码情况下桥接转换logback

转自:http://blog.csdn.net/chenminghe271/article/details/38682493 考虑到logback日志组件性能比log4j好,所以项目开发过程中抛弃l...
  • abc86319253
  • abc86319253
  • 2015年09月25日 11:49
  • 1352

log4j输出多个自定义日志文件

http://blog.csdn.net/janestone/article/details/1862678  log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件...
  • ericzhangg
  • ericzhangg
  • 2016年01月13日 10:57
  • 1993

logback取代 log4j的理由

Logback和log4j是非常相似的,如果你对log4j很熟悉,那对logback很快就会得心应手。下面列了logback相对于log4j的一些优点:     1、更快的实现  Logback...
  • jek123456
  • jek123456
  • 2016年05月26日 18:26
  • 439

log4j不打日志问题之解决方案(一)

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在使用log4j的时候,难免会遇到各种问题;下面介绍一下,使用log4j不打印日志情况的排...
  • QQ994406030
  • QQ994406030
  • 2016年12月02日 11:43
  • 5863

Spring 利用logback输出打印日志:

Spring 利用logback输出打印日志: 一、pom.xml中添加相应的jar包: 1、首先由于logback的jar包与slf4j-log4j12冲突,所以先去掉相关的jar包: ...
  • xiaosongwahaha
  • xiaosongwahaha
  • 2018年01月01日 21:21
  • 21

Linux中利用logrotate来对log文件进行转储

使用logrotate对日志文件转储,按时或者按大小。logrotate简介NAME logrotate - rotates, compresses, and mails system ...
  • yeruby
  • yeruby
  • 2016年07月02日 21:38
  • 1720

log4j【3】(简单的配置)

log4j.xml的 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3...
  • u013551536
  • u013551536
  • 2016年02月03日 22:14
  • 259

Log4j学习总结-3

注:按时间名文件格式是是按天输出文件的,所以当天的文件是不会有日期格式的日志文件。 log4j.logger.包名 = appenderName 然后再设置layout 如果想对不同的类输出不同的文...
  • lan12334321234
  • lan12334321234
  • 2017年04月11日 10:54
  • 49

rgb to yuv 互相转化

说明:下面的代码用C\C++执行都可以,用C的时候请把#include 删除。 RGB to YUV420 原代码:  RGB2YUV.CPP文件 [cpp] view plain...
  • yangzm
  • yangzm
  • 2014年09月18日 10:27
  • 1395

log4j在spring4中的配置

首先必须有日志配置文件 log4j.rootLogger = INFO,stdout,D,E log4j.appender.stdout = org.apache.log4j.ConsoleAp...
  • qq_36823916
  • qq_36823916
  • 2017年06月03日 16:29
  • 1821
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: Log4J学习笔记(3)---(转)
举报原因:
原因补充:

(最多只允许输入30个字)