- 论坛徽章:
- 0
|
Don't use System.out.println!
We should use log4j or other logger. this is my simple guide to use log4j in project.
import org.apache.log4j.Category;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Priority;
import java.io.Serializable;
import java.io.FileInputStream;
import java.util.Properties;
import java.util.Enumeration;
import java.util.Hashtable;
/**
* A wrapper tool class wrap log4j Category.
* Usage: Logger log = Logger.getLogger(Logger.class.getName());
* log.info("Just testing a log message with priority set to INFO");
log.warn("Just testing a log message with priority set to WARN");
* User: tango
* Date: 2005-9-15 * Time: 14:08:50
*
*/
public class Logger implements Serializable {
private Category cat;
private static Properties prop = null;
private static Hashtable LogObjects = new Hashtable();
private static final String profile ="log4j.properties";
private StringBuffer buffer=new StringBuffer("");
/**
* The constructor.
*
[email=*@param]*@param[/email]
name The logger's name. This name distinguish logger object one another.
[email=*@since]*@since[/email]
1.0
*/
public Logger(String name, String logConfFileName) {
if (prop == null){
prop = new Properties();
try{
if(logConfFileName!=null) prop.load(new FileInputStream(logConfFileName));
}catch(Exception e){
e.printStackTrace();
}
PropertyConfigurator.configure(prop);
}
cat = Category.getInstance(name);
}
public Logger(String name, String logConfFileName,String logFilePath) {
if (prop == null){
prop = new Properties();
try{
prop.load(new FileInputStream(logConfFileName));
}catch(Exception e){
e.printStackTrace();
}
if (!logFilePath.endsWith(System.getProperty("file.separator"))){
logFilePath += System.getProperty("file.separator");
}
// If the log file is relative path, put it into the Log home.
Enumeration keys = prop.propertyNames();
while (keys.hasMoreElements()) {
String key = (String)keys.nextElement();
if(key.indexOf(".File")>0){
String fileName = prop.getProperty(key);
if (!(fileName.startsWith(System.getProperty("file.separator"))||fileName.indexOf(":")>0)){
fileName = logFilePath+fileName;
prop.setProperty(key,fileName);
}
}
}
PropertyConfigurator.configure(prop);
}
cat = Category.getInstance(name);
}
public static Logger getLogger(String name) {
//Logger logger = super.getLogger(name);
if (LogObjects.containsKey(name)) {
return (com.wesoft.vugo.util.Logger)LogObjects.get(name);
}
Logger _newLogger = new Logger(name,null); //find the profile by default class directory
LogObjects.put(name, _newLogger);
return _newLogger;
}
/**
* Log a FATAL message.
*
* If the logger is currently enabled for the FATAL message level then the
* given message is forwarded to all the registered output Handler objects.
*
[email=*@param]*@param[/email]
message The string message (or a key in the message catalog)
[email=*@since]*@since[/email]
1.0
*/
public void fatal(String message) {
//cat.log(Level.SEVERE, message);
cat.fatal(message);
}
public void fatal(Object obj){
buffer=new StringBuffer("");
if(obj instanceof Exception){
StackTraceElement[] trace = ((Exception)obj).getStackTrace();
buffer.append(obj.toString());
for (int i=0; i
---------------------------------------------------
Put the log4j.properties in your classpath
--------------------------------------------------
###############################################################################
# LOG4J CONFIGURATION FILE #
#Author:Tango Tang #
#Date :2005/9/15 #
###############################################################################
!----------------------####### BEGIN OF PROPERTIES #######----------------------!
#log4j.rootLogger= WARN, FILE, CONSOLE, ROLLING_FILE
log4j.rootLogger= WARN, FILE, CONSOLE
########################
# Console Appender
########################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Threshold=WARN
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %c{1}.%t - %-6p - %m%n
########################
# File Appender
########################
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=vugo.log
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.Append=true
log4j.appender.FILE.MaxFileSize=1000KB
log4j.appender.FILE.MaxBackupIndex=20
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %c{1}.%t - %-5p - %m%n
########################
# Rolling File Appender
########################
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=vugo_rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=1000KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=20
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %c{1}.%t - %-5p - %m%n
!----------------------####### END OF PROPERTIES #######----------------------!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/9924/showart_47609.html |
|