suzixu

BlogJava 首页 新随笔 联系 聚合 管理
  4 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks
第一步:先定义一个简单的log4j工厂类,很简单,直接继承Logger
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
 * 自定义的Logger工厂类,继承自Logger
 * 
 * 
@author 见习和尚
 * 
@since 2010
 * 
@version v1.0
 
*/

public class LogFactory extends Logger{

    
/**
     * 静态块---初始化log4j配置文件
     
*/

    
static {
        
//log4j配置文件路径
        PropertyConfigurator.configure("D:\\workspace\\LogWeb\\src\\log4j.properties");
    }

    
    
/**
     * 重载的构造方法
     * 
@param name
     
*/

    
protected LogFactory(String name) {
        
super(name);
    }

}


第二步:在classpath下创建并配置log4j配置文件,配置文件如下(注释已经写的很清楚了):
log4j.properties配置文件如下,可直接copy使用
## defined log level;log to Console and to file and to DB
log4j.rootCategory
=DEBUG, stdout , R ,DATABASE
## printout log to Console
log4j.appender.stdout
=org.apache.log4j.ConsoleAppender
## log format
log4j.appender.stdout.layout
=org.apache.log4j.PatternLayout
## Console log format
## log4j.appender.stdout.layout.ConversionPattern
=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.stdout.layout.ConversionPattern
=%d{yyyy-MM-dd hh:mm:ss} | [%t] (%F:%L) | %m%n

## defined each day create a 
new logfile
log4j.appender.R
=org.apache.log4j.DailyRollingFileAppender

## 
'.'yyyy-MM: each month
## 
'.'yyyy-ww: each week
## 
'.'yyyy-MM-dd: each day
## 
'.'yyyy-MM-dd-a: two files one day
## 
'.'yyyy-MM-dd-HH: per hours
## 
'.'yyyy-MM-dd-HH-mm: per minites
log4j.appender.R.DatePattern
='.'yyyy-MM-dd-HH-mm
## defined logfile path
log4j.appender.R.File
=D\:\\Program Files\\apache-tomcat-6.0.28\\logs\\gc.log
log4j.appender.R.layout
=org.apache.log4j.PatternLayout
## 
%d means date time; %t means which method;
## 
%F means file;%c means class name; %L means which line;
## 
%m means message which we want to print; %n means "\r\n" in windows and "\n" in unix
## 
%p means print log level; %d{yyyy-MM-dd hh:mm:ss} means print "yyyy-MM-dd hh:mm:ss" date
log4j.appender.R.layout.ConversionPattern
=%d{yyyy-MM-dd hh:mm:ss} | [%t] (%F:%L) | %m%n

# in database
log4j.appender.DATABASE.BufferSize
=10
log4j.appender.DATABASE
=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL
=jdbc\:mysql\://localhost\:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user
=root
log4j.appender.DATABASE.password
=password
log4j.appender.DATABASE.sql
=INSERT INTO Log4j(message) VALUES ('[framework] %d{yyyy-MM-dd hh\:mm\:ss} | [%t] (%F\:%L) | %m%n'
log4j.appender.DATABASE.layout
=org.apache.log4j.PatternLayout 

log4j.logger.com.neusoft
=DEBUG
log4j.logger.com.opensymphony.oscache
=ERROR
log4j.logger.net.sf.navigator
=ERROR
log4j.logger.org.apache.commons
=ERROR
log4j.logger.org.apache.struts
=WARN
log4j.logger.org.displaytag
=ERROR
log4j.logger.org.springframework
=DEBUG
log4j.logger.com.ibatis.db
=WARN
log4j.logger.org.apache.velocity
=FATAL
log4j.logger.com.canoo.webtest
=WARN
log4j.logger.org.hibernate.ps.PreparedStatementCache
=WARN
log4j.logger.org.hibernate
=DEBUG
log4j.logger.org.logicalcobwebs
=WARN 

第三部:在代码中使用log4j,样例如下:
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;

import com.sys.common.util.log.LogFactory;

public class TestLog4j {
    
static Logger logger = LogFactory.getLogger(TestLog4j.class.getName());

    
public TestLog4j() {
    }


    
public static void main(String[] args) {
        logger.debug(
"Start of the main() in TestLog4j");
        logger.info(
"Just testing a log message with priority set to INFO");
        logger.warn(
"Just testing a log message with priority set to WARN");
        logger.error(
"Just testing a log message with priority set to ERROR");
        logger.fatal(
"Just testing a log message with priority set to FATAL");
        logger.log(Priority.WARN, 
"Testing a log message use a alternate form");
    }

}

OK!在java application应用中这样配置就结束了。样例支持三种输出:1、控制台 2、文件 3、数据库

另外:如果要在web中使用log4j。只需额外定义一个log4j加载类并配置web.xml即可。加载类如下:
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.HttpServlet;

public class Log4jInit extends HttpServlet {

    
public void init() {
        String prefix 
= getServletContext().getRealPath("/");
        String file 
= getInitParameter("log4j");
        
if (file != null{
            PropertyConfigurator.configure(prefix 
+ file);
        }

    }

}

web.xml中增量配置如下:
    <servlet>
        
<servlet-name>log4j</servlet-name>
        
<servlet-class>com.apache.jakarta.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>
好了,配置完毕。接下来就是用了。。。
posted on 2010-10-17 19:39 见习和尚 阅读(392) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: