- 论坛徽章:
- 0
|
作者:dxadnwfn(gong c w)
版权:"厕所里冥想"
上传/更新时间:2007-07-30
功能:log4j的在次封装,比较实用,封装好后方便调用..
package com.ivsoftware.common.log;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties;
import com.ivsoftware.common.xml.DomXmlUtil;
import com.ivsoftware.common.PrintUtil;
public final class IvsoftwareLogger {
/**
* Handle to the Current Logger
*/
private Logger logger = null;
/**
* PROPERTY_FILE is for log4j configure,
* now we set it as "classes/conf/ivsoftwarelogger.properties";
*/
private static final String PROPERTY_FILE = "/conf/ivsoftwarelogger.properties";
/**
* @todo to init the appender of the root logger manually
* This is a temperary approach. Should use configuration file.
*/
private synchronized void init() {
Properties prop = new Properties();
try {
InputStream is = this.getClass().getResourceAsStream(PROPERTY_FILE);
if (is!=null) {
prop.load(is);
is.close();
PropertyConfigurator.configure(getClass()
.getResource(PROPERTY_FILE));
}else {
System.out.println(this.getClass().getName()+"init:加载properties文件失败;\n" +
"请检查路径是否正确!路径例:classes/conf/ivsoftwarelogger.properties");
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Private constructor that is not available for public use.
*
* @param logger Logger to use
*/
private IvsoftwareLogger(Logger logger) {
init();
this.logger = logger;
}
/**
*
* All SwanetLogger callers are assumed to get a SwanetLogger instance
* by this method instead of the traditional constructor's way.
*
*
* @param clazz caller class
* @return SwanetLogger instance
*/
public static IvsoftwareLogger getLogger(Class clazz) {
//Check if log4j 1.2+ package is available
try {
Class.forName("org.apache.log4j.Logger");
} catch (ClassNotFoundException ex) {
return new IvsoftwareLogger(null);
}
//Logger logger = Logger.getLogger((clazz == null)?null:clazz.getName());
Logger logger = Logger.getLogger(clazz);
return new IvsoftwareLogger(logger);
}
/**
*
* All SwanetLogger callers are assumed to get a SwanetLogger instance
* by this method instead of the traditional constructor's way.
*
*
* @param name logger name
* @return SwanetLogger instance
*/
public static IvsoftwareLogger getLogger(String name) {
//Check if log4j 1.2+ package is available
try {
Class.forName("org.apache.log4j.Logger");
} catch (ClassNotFoundException ex) {
return new IvsoftwareLogger(null);
}
//Logger logger = Logger.getLogger((clazz == null)?null:clazz.getName());
Logger logger = Logger.getLogger(name);
return new IvsoftwareLogger(logger);
}
/**
* Log a message object with the DEBUG level.
* To print a stack trace use the
[email={@link]{@link[/email]
#logDebug(Object,Throwable)} form instead.
*
* @param message the message object to log.
*/
public void logDebug(Object message) {
log(Level.DEBUG, message);
}
/**
* Log a message object with the DEBUG level including the stack trace of
* the Throwable t passed as parameter
*
* @param message the message object to log.
* @param t the exception to log, including its stack trace.
*/
public void logDebug(Object message, Throwable t) {
log(Level.DEBUG, message, t);
}
/**
* Log a message object with the ERROR level.
* To print a stack trace use the
[email={@link]{@link[/email]
#logError(Object,Throwable)} form instead.
*
* @param message the message object to log.
*/
public void logError(Object message) {
log(Level.ERROR, message);
}
/**
* Log a message object with the ERROR level including the stack trace of
* the Throwable t passed as parameter
*
* @param message the message object to log.
* @param t the exception to log, including its stack trace.
*/
public void logError(Object message, Throwable t) {
log(Level.ERROR, message, t);
}
/**
* Log a message object with the FATAL level.
*
* @param message the message object to log.
*/
public void logFatal(Object message) {
log(Level.FATAL, message);
}
/**
* Log a message object with the FATAL level including the stack trace of
* the Throwable t passed as parameter
*
* @param message the message object to log.
* @param t the exception to log, including its stack trace.
*/
public void logFatal(Object message, Throwable t) {
log(Level.FATAL, message, t);
}
/**
* Log a message object with the WARN level.
*
* @param message the message object to log.
*/
public void logWarning(Object message) {
log(Level.WARN, message);
}
/**
* Log a message object with the WARN level including the stack trace of
* the Throwable t passed as parameter
*
* @param message the message object to log.
* @param t the exception to log, including its stack trace.
*/
public void logWarning(Object message, Throwable t) {
log(Level.WARN, message, t);
}
/**
* Log a message object with the INFO level.
*
* @param message the message object to log.
*/
public void logInfo(Object message) {
log(Level.INFO, message);
}
/**
* Log a message object with the INFO level including the stack trace of
* the Throwable t passed as parameter
*
* @param message the message object to log.
* @param t the exception to log, including its stack trace.
*/
public void logInfo(Object message, Throwable t) {
log(Level.INFO, message, t);
}
/**
* To judge a level is supported by the logger or not.
*
* @param level Priority for example:Level.ERROR.
* @return boolean support the level will return true, otherwise return false.
*/
public boolean isEnabled(Level level) {
return logger.isEnabledFor(level);
}
/**
* To judge if DEBUG level is enabled by the logger or not.
*
* @return boolean support the level will return true, otherwise return false.
*/
public boolean isDebug() {
return logger.isEnabledFor(Level.DEBUG);
}
/**
* To judge if INFO level is enabled by the logger or not.
*
* @return boolean support the level will return true, otherwise return false.
*/
public boolean isInfo() {
return logger.isEnabledFor(Level.INFO);
}
/**
* To judge if WARN level is enabled by the logger or not.
*
* @return boolean support the level will return true, otherwise return false.
*/
public boolean isWarn() {
return logger.isEnabledFor(Level.WARN);
}
/**
* To set the logger can support what level.
*
* @param level Priority for example:Level.WARN.
*/
public void setLevel(Level level) {
logger.setLevel(level);
}
/**
* Log the message at the specified level
*
* @param level Level to use for the message
* @param message The message to Log
*/
private void log(Level level, Object message) {
if (logger != null && logger.isEnabledFor(level)) {
logger.log(level, message);
}
}
/**
* Log the message and the exception at the specified level
*
* @param level Level to log the message at
* @param message Message to log
* @param t The exception to log
*/
private void log(Level level, Object message, Throwable t) {
if (logger != null && logger.isEnabledFor(level)) {
logger.log(level, message, t);
}
}
/**
* Logs a message with an arry of parameters. The message
* should contain a formatting string and the objects being
* passed have to support toString() method
*
* @param level Log level
* @param theMessage the message to log
* @param objArray Array of parameters to log
*/
public void logArray(Level level, String theMessage, Object[] objArray) {
if (logger != null && logger.isEnabledFor(level)) {
logger.log(level, MessageFormat.format(theMessage, objArray));
}
}
/**
* Logs a message with a single object as additional paraeter.
* The message should contain a formatting string and the objects being
* passed have to support toString() method
*
* @param level Log level
* @param theMessage the message to log
* @param object1 Object to log
*/
public void log1(Level level, String theMessage, Object object1) {
if (logger != null && logger.isEnabledFor(level)) {
Object[] args = { object1 };
logger.log(level, MessageFormat.format(theMessage, args));
}
}
/**
* Logs a message with two objects as additional paraeter.
* The message should contain a formatting string and the objects being
* passed have to support toString() method
*
* @param level Log level
* @param theMessage the message to log
* @param object1 Object to log
* @param object2 Object to log
*/
public void log2(Level level, String theMessage, Object object1,
Object object2) {
if (logger != null && logger.isEnabledFor(level)) {
Object[] args = { object1, object2 };
logger.log(level, MessageFormat.format(theMessage, args));
}
}
/**
* Logs a message with three objects as additional paraeter.
* The message should contain a formatting string and the objects being
* passed have to support toString() method
*
* @param level Log level
* @param theMessage the message to log
* @param object1 Object to log
* @param object2 Object to log
* @param object3 Object to log
*/
public void log3(Level level, String theMessage, Object object1,
Object object2, Object object3) {
if (logger != null && logger.isEnabledFor(level)) {
Object[] args = { object1, object2, object3 };
logger.log(level, MessageFormat.format(theMessage, args));
}
}
/**
* Logs a message with four objects as additional paraeter.
* The message should contain a formatting string and the objects being
* passed have to support toString() method
*
* @param level Log level
* @param theMessage the message to log
* @param object1 Object to log
* @param object2 Object to log
* @param object3 Object to log
* @param object4 Object to log
*/
public void log4(Level level, String theMessage, Object object1,
Object object2, Object object3, Object object4) {
if (logger != null && logger.isEnabledFor(level)) {
Object[] args = { object1, object2, object3, object4 };
logger.log(level, MessageFormat.format(theMessage, args));
}
}
}
------------------------封装部份OK------------------------------
------------------------配置部份OK------------------------------
log4j.logger.com.ivsoftware=DEBUG, R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern='.'yyyy-MM-dd
log4j.appender.R.File=sSqlBuild.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
说明:
1.log4j.logger.com.ivsoftware=DEBUG, R
所有在com.ivsoftware类下文件有效,R创建一个日志对象
2.log4j.appender.R.DatePattern='.'yyyy-MM-dd
日志输出时时间形式
3.log4j.appender.R.File=日志文件.log
这个就是日志文件名
--------------------------调用也很简单---------------------------
private static IvsoftwareLogger logger=IvsoftwareLogger.getLogger(SqlServerAction.class);
logger.logDebug("run:action="+action);
就可以在日志的路径下找到配置文件了.默认是在服务器的bin目录下.如:
E:\devtools\weblogic\user_projects\domains\mydomain\日志文件.log
E:\devtools\Tomcat50\bin\日志文件.log
这样log4j 的日志调用就可以啦.简单吧...不用改几个地方就OK啦.
blog日志,注意行版权哦,转载请注明
作者:dxadnwfn(gong c w)
版权:"厕所里冥想"
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17667/showart_350051.html |
|