在项目中记录日志

最近写了几个接口和服务,发现自己在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>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值