封装log4j的步骤
Log4jImpl.java //Log4j的实现类package com.ynwst.enterprise.sys;
/**
*
Title:
*
Description:
*
Copyright: Copyright (c) 2003 xiaowugui
*
Company:http://www.ynwst.com
* @author xiaowugui
* @version 1.0
*/
import org.apache.log4j.*;
import java.io.*;
import java.util.*;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class Log4jImpl
{
public static final String PROFILE = "log4j.properties";
/**
* Holds singleton instance
*/
private static Log4jImpl impl;
static
{
impl = new Log4jImpl();
}
private Logger log4j;
/**
* prevents instantiation
*/
private Log4jImpl()
{
log4j = LogManager.getLogger(Log4jImpl.class);
try
{
Properties pro = new Properties();
InputStream is = getClass().getResourceAsStream(PROFILE);
pro.load(is);
PropertyConfigurator.configure(pro);
}
catch(IOException e)
{
BasicConfigurator.configure();
e.printStackTrace();
}
}
public void log(String level,Object msg)
{
log(level,msg,null);
}
public void log(String level,Throwable e)
{
log(level,null,e);
}
public void log(String level,Object msg,java.lang.Throwable e)
{
if(log4j != null)
{
log4j.log((Priority)Level.toLevel(level),msg,e);
}
}
/**
* 单例模式
*/
static public Log4jImpl getInstance()
{
return impl;
}
}
Log.java //记录Log使用类
package com.ynwst.enterprise.sys;
/**
*
Title:
*
Description:
*
Copyright: Copyright (c) 2003 xiaowugui
*
Company:
* @author xiaowugui
* @version 1.0
*/
public class Log
{
private static Log4jImpl log = Log4jImpl.getInstance();
/**
*
*/
public Log()
{
//super();
}
public static void logError(String msg)
{
log.log("ERROR",msg);
}
public static void logError(Throwable e)
{
log.log("ERROR",null,e);
}
public static void logWarn(String msg)
{
log.log("WARN",msg);
}
public static void logWarn(Throwable e)
{
log.log("WARN",null,e);
}
public static void logInfo(String msg)
{
log.log("INFO",msg);
}
public static void logInfo(Throwable e)
{
log.log("INFO",null,e);
}
public static void logDebug(String msg)
{
log.log("DEBUG",msg);
}
public static void logDebug(Throwable e)
{
log.log("DEBUG",null,e);
}
}
log4j.properties //Log4j配置文件
log4j.rootLogger=DEBUG, A2, A1
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.File=G:/enterprise/log/error.log
log4j.appender.A2.Append=true
log4j.appender.R.MaxFileSize=10000KB
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p][%t] %d{yyyy-MM-dd HH:mm:ss,SSS} message:%m%n
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.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.A1.layout.ConversionPattern=%d [%t] %-5p - %m%n
testLog.jsp //调用Log类
<%@ language="java" page="" pageencoding="GBK">
<%@ import="com.ynwst.enterprise.sys.Log" page="">
<%
Log.logDebug("DEBUG");
Log.logInfo("INFO");
Log.logWarn("WARN");
Log.logError("ERROR");
try
{
int i = Integer.parseInt("xxx");
}catch(Exception e)
{
Log.logDebug(e.toString());
Log.logInfo(e.toString());
Log.logWarn(e.toString());
Log.logError(e.toString());
}
%>
注:使用此方法封装Log4j的操作,可以使记录日志变得更方便。唯一不足的是无法返回当前类的相关信息,不过还好,我的错误信息都是自己定义的,所以一般在记录错误信息的时候,都会自己把当前类的相关信息做一个标识。 %
%@>%@><%@ page="" language="java" pageencoding="GBK"><%@ page="" import="com.ynwst.enterprise.sys.Log"><%
本文地址:http://www.45fan.com/dnjc/69603.html