免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3474 | 回复: 0
打印 上一主题 下一主题

log4j的在次封装,比较实用,封装好后方便调用..还有log4j配置说明 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-30 15:35 |只看该作者 |倒序浏览

作者: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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP