第一步:先定義一個簡單的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>
好了,配置完畢。接下來就是用了。。。





























第二步:在classpath下創建并配置log4j配置文件,配置文件如下(注釋已經寫的很清楚了):
log4j.properties配置文件如下,可直接copy使用




















































第三部:在代碼中使用log4j,樣例如下:




















OK!在java application應用中這樣配置就結束了。樣例支持三種輸出:1、控制臺 2、文件 3、數據庫
另外:如果要在web中使用log4j。只需額外定義一個log4j加載類并配置web.xml即可。加載類如下:













web.xml中增量配置如下:








