本文创作的目的是为了分享一个良好的日志工具类,可以很好的方便在开发过程当中或者是日志查看时候很清晰的排查代码问题,同时也很好的展示了代码的逻辑。
注解:@Slf4j
使用:Logger注解下的info方法,还有debug,error方法等
String op = "OrderService.validateOrder" ;
log.info(Logs.op(op)
.msg("开始验证收入信息")
.kv("batchNo" , batchEntity.getBatchNo())
.toString());
//业务逻辑
orderService.validate();
log.info(Logs.op(op)
.msg("验证收入信息,end")
.kv("batchNo" , batchEntity.getBatchNo())
.toString());
util:log工具
- %s:占位符
public class Logs {
/**
* 操作类型
*/
private String operation;
/**
* 日志信息
*/
private String message;
/**
* 额外的参数
*/
private Map<String, Object> params = new HashMap<String, Object>();
/**
* 日志格式 [operation][message],{key1=value1,key2=value2,key3=value3}
*/
private static final String LOG_FORMAT = "[%s][%s],%s";
public Logs(String operation) {
this.operation = operation;
}
public static Logs op(String op) {
return new Logs(op);
}
public Logs msg(String message) {
this.message = message;
return this;
}
public Logs kv(String key, Object value) {
params.put(key, value);
return this;
}
public Logs kvs(Map<String, Object> maps) {
params.putAll(maps);
return this;
}
@Override
public String toString() {
return String.format(LOG_FORMAT, operation, message, params.toString());
}
}