java logger slf4j_强迫症犯了,忍不住赞一下slf4j包Logger.java的优雅代码

如下是slf4j-api包下的Logger接口类里其中几个方法的声明:

packageorg.slf4j;public interfaceLogger {/*** Log a message at the INFO level.

*

*@parammsg the message string to be logged*/

public voidinfo(String msg);/*** Log a message at the INFO level according to the specified format and argument.

*

*@paramformat the format string

*@paramarg the argument*/

public voidinfo(String format, Object arg);/*** Log a message at the INFO level according to the specified format and arguments.

*

*@paramformat the format string

*@paramarguments a list of 3 or more arguments*/

public voidinfo(String format, Object... arguments);/*** Log a message at the ERROR level.

*

*@parammsg the message string to be logged*/

public voiderror(String msg);public voiderror(String format, Object arg);public voiderror(String format, Object... arguments);/*** Log an exception (throwable) at the ERROR level with an accompanying message.

*

*@parammsg the message accompanying the exception

*@paramt the exception (throwable) to log*/

public voiderror(String msg, Throwable t);

}

slf4j(Simple Logging Facade for Java)是Facade模式的典型应用,它定义了一套标准的日志接口,诸如logback、log4j、slf4j-simple等框架都是这个日志接口的具体实现。从这一点来看,slf4j的标准化显得相当重要,当然,从上面这些方法可见,它做到了!

我这里要点赞的也是这几个方法的定义。注意观察比较这几个有参的info/error方法的第一个参数:有的是format,有的是msg。

充分展现了代码的整洁之道,由此可以看出来作者是很讲究代码的可读性的。

看上面几个方法,

如果记录异常信息,不妨调用error(String msg, Throwable t)方法。这时,第一个参数不是format,是msg。所以下面语句里的“{}”就有画蛇添足之嫌了:

try{

......

}

}catch(IOException e) {

LOG.error("#PayCenterHttpTransport,http调用出错!异常信息:{}", e);

}

如果要打印更详细的info日志,可以调用logger.info那几个重载方法,支持用format形式。

log.info("融宝请求url:{},请求报文:{}", url, json);

logger.error也是支持format的。如下是Logger接口类里这个error重载方法的定义。注意调用方式是

log.error("执行请求{}出现异常,",1,new Exception("test"));

/*** Log a message at the ERROR level according to the specified format and arguments.

*

*

This form avoids superfluous object creation when the logger is disabled for the ERROR level.

*

*@paramformat the format string

*@paramarg1 the first argument

*@paramarg2 the second argument*/

public void error(String format, Object arg1, Object arg2);

打印的异常日志是:

14:55:25.997 [main] ERROR ddd - 执行请求1出现异常,

java.lang.Exception: test

at com.emax.paycenter.common.util.MailUtil.main(MailUtil.java:100) [classes/:na]

=====over=====

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值