import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import org.apache.log4j.*;
public class CustomerLogUtil
{
private static CustomerLogUtillogUtil;
private Logger log;
public static SOALogUtil getInstance(Class c)
{
if(logUtil == null)
{
logUtil = new CustomerLogUtil(c);
}
return logUtil;
}
private CustomerLogUtil(Class c)
{
String filepath = (new StringBuilder()).append(System.getProperty("java.classpath")).append("/config/log4j.properties").toString();
PropertyConfigurator.configure(filepath);
log = Logger.getLogger(c);
Logger _tmp = log;
RollingFileAppender appender = (RollingFileAppender)Logger.getRootLogger().getAppender("stdout");
String file = appender.getFile().replace("CustomerLogUtil.log", (new StringBuilder()).append(c.getSimpleName()).append(".log").toString());
appender.setFile(file);
appender.activateOptions();
}
private String objToString(Object obj)
{
if(obj instanceof Exception)
{
if(((Exception)obj).getStackTrace() == null)
{
ByteArrayOutputStream buf = new ByteArrayOutputStream();
((Exception)obj).printStackTrace(new PrintWriter(new PrintWriter(buf, true)));
return buf.toString();
} else
{
return ((Exception)obj).getMessage();
}
} else
{
return obj.toString();
}
}
public void info(Object obj)
{
log.info(objToString(obj));
}
public void debug(Object obj)
{
log.debug(objToString(obj));
}
public void error(Object obj)
{
log.error(objToString(obj));
}
public void fatal(Object obj)
{
log.fatal(objToString(obj));
}
public void warn(Object obj)
{
log.warn(objToString(obj));
}
}
log4j.properties:
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.RollingFileAppender
log4j.appender.stdout.Threshold=info
log4j.appender.stdout.File = ${java.classpath}/log/CustomerLogUtil.log
log4j.appender.stdout.MaxFileSize=100MB
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.MaxBackupIndex=1
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %c %n%-5p %c %x - %m%n