在项目中会使用log4j来记录日志,例如外围系统传参数过来(这里特指对象),
线上环境调查问题的时候查日志,就需要知道到底传过来的每个值是什么,
那么就会有以下的写法:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("外围系统传参为:objParam:" + objParam);
}
这里的话就需要在objParam实体类里面重写toString()方法:
import org.apache.commons.lang.builder.ToStringBuilder;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
显示结果:
外围系统传参为:objParam:com.xx.xx.service.external.impl.xx.facade.request.ReqParams@76e5f3d2[TranAbbr=<null>,MercCode=<null>,MercDtTm=<null>,TransType=<null>,VirAcctFlag=<null>,SubMerId=<null>,SubMerName=<null>,AcctNo=abc001,MobileNo=<null>,SubMerType=<null>,IdType=<null>,IdNo=<null>,MercUrl=<null>,Remark1=<null>,Remark2=<null>,Remark3=<null>,list=[1, 2]]
当对象中包含对象的情况,被包含的对象同样重写toString方法即可!
relectionToString()将利用Java Refelection机制显示类实例的所有属性的信息.