您的位置:首页 > 其它

在项目中记录日志

2013-05-10 18:33 99 查看
最近写了几个接口和服务,发现自己在java基础部分的几个薄弱环节:

1.日志的记录。2.对于异常的捕获与处理。3.对应文件读写的综合运用,尤其是结合线程。4.webservice的写法模式还需要巩固5.Hessian的用法,有空总结一下。

下面就日志的记录做一下总结:

以前没有养成写规范日志的习惯,一直都用println语句输出控制台,上线之后,查看错误日志本来就是一件很头疼的事情,而且看见自己的日志一团糟更烦了,看见别人的项目日志都很有规律,所以学习了一下。技术很简单,但是作为基础,每个项目基本上都能用到,记录一下,以后好用。先贴代码,下面再解释

Logger类:(定义三个基本的方法,logDebug,logInfo,logError)
public abstract class Logger {
protected boolean debug = true;

public abstract void logError(String message);

public void logDebug(String message) {
if (!debug)
return;
}

public abstract void logInfo(String message);

public boolean isDebug() {
return debug;
}

public void setDebug(boolean debug) {
this.debug = debug;
}

}


LoggerFactory类:(logger一般是通过配置文件指定具体是哪种实现类,在这里为了简单说明,直接new了)

public class LoggerFactory {
public static Logger logger = new SystemLogger();

public static Logger getLogger() {
return logger;
}

public void setLogger(Logger logger) {
LoggerFactory.logger = logger;
}

}


SystemLogger实现类:

public class SystemLogger extends Logger {
public static final String DEBUG = "[DEBUG]\t";
public static final String ERROR = "[ERROR]\t";
public static final String INFO = "[INFO]\t";

@Override
public void logDebug(String message) {
super.logDebug(message);
System.out.println(DEBUG + message);
}

@Override
public void logError(String message) {
System.err.println(ERROR + message);
}

@Override
public void logInfo(String message) {
System.out.println(INFO+message);
}
}
Log4jLogger实现类:

public class Log4jLogger extends Logger {
private static final Log errorlog = LogFactory.getLog("Error");

private static final Log infoLog = LogFactory.getLog("Info");
private static final Log debugLog = LogFactory.getLog("Debug");

@Override
public void logError(String message) {
errorlog.error(message);
}

@Override
public void logDebug(String message) {
super.logDebug(message);
debugLog.debug(message);
}

@Override
public void logInfo(String message) {
infoLog.info(message);
}

}


这里解释一下SystemLogger与Log4jLogger的区别,SystemLogger一般用于控制台输出,也就是上线之后在logs下生成的日志文件,不需要配置文件。Log4jLogger一般用于输出到文件,而且可以log4j的配置生成对个文件。如果不为生成文件,只为记录程序运行过程的记录,用SystemLogger就可以了。

测试类

Logger logger = LoggerFactory.getLogger();
String msg = "msg";
logger.logDebug("dao get Id "+msg);

结果:[DEBUG]    dao get Id msg


这样去查日志的话就很规范了。

对于log4j的话,也可以不用这个类,直接LogFactory.getLog(String.class).info("log4j测试");就可以了。log4j的配置参数在下面一篇文章里再做说明。

补充:在spring配置文件里面的配置:

<bean id="Logger"
class="com.tenddata.global.service.standardization.commons.log.impl.SystemLogger">
<property name="debug" value="true"></property>
</bean>

<bean id="LoggerFactory"
class="com.tenddata.global.service.standardization.common.factory.LoggerFactory">
<property name="logger" ref="Logger"></property>
</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: