打印日志规范

@UtilityClass
@Slf4j
public class GsonUtils {
    private static final Gson GSON = new Gson();

    public static String toJsonStr(Object object) {
        return GSON.toJson(object);
    }

    public static String toJsonStr(Object obj, Type type) {
        return GSON.toJson(obj, type);
    }

    public static <T> T fromJson(String json, Class<T> classOfT) {
        return GSON.fromJson(json, classOfT);
    }

    public static <T> T fromJson(String json, Type typeOfT) {
        return GSON.fromJson(json, typeOfT);
    }

    public static String toJson(Object object) {
        try {
            return GSON.toJson(object);
        } catch (Exception e) {
            log.error("序列化失败", e);
        }
        return StringUtils.EMPTY;
    }
}

一、打日志方式

log.warn("XxxTService.queryXxx...参数错误 param: {}", GsonUtils.toJsonStr(request), e);

二、throw

throw new GatewayException(2000, String.format("xxx异常,req:[%s]", GsonUtils.toJsonStr(req)), e);

三、打印日志处

  • **请求入出口:**在函数或对外接口处打印日志,方便进行日志统计,同时也方便系统运行状态监控。

  • **接口调用 :**需打印接口调用参数和调用结果。

  • **程序异常:**异常时要么抛出异常,要么在catch块中打印异常堆栈信息,但不要重复打印,如又在catch中抛异常又打印错误日志。

  • **特殊条件分支:**对于一些不合理的非预期情况,可以打印日志,也可以抛异常。

  • **关键路径:**可以理解为是系统的核心的逻辑操作,如单据状态流转操作,库存操作等,主要由业务系统自行判断,对业务操作的结果成功与否起到决定性作用,这部分记录的日志对于后期排查业务主流程问题能提供关键决策信息。

  • 数据的导入导出: 涉及接收外部导入数据或者导出数据,记录操作者,以及操作输入相关的查询条件,不要求一定记录具体查询到的数据内容(数据量过大则不应该记录)。

四、实践

等级内容备注
*强制*正确的记录异常堆栈信息try { Integer x = null; ++x; } catch (Exception e) { log.error("Error reading configuration file", e); }
*强制*log本身不要引入异常,注意防止NPE//request为null,则该打印日志语句将抛出异常。 logger.debug("Processing request with id: {}", request.getId());
*强制*严禁打印info日志无脑的记录方法的出入参,尤其是当请求入参和返回结果对象很大的时候,非常影响接口的性能。应该只记录出入参的核心信息。
*强制*避免打印敏感信息明文,如身份证号、银行卡号等,防止日志文件外泄导致用户敏感信息泄露,可以打token。
*推荐*循环中尽量不打印日志,一定要打印,可以加上条件判断,记录关键节点信息
*推荐*[ ] 进行参数隔离,可读性好logger.info("Save order with order no:[{}], and order amount:[{}]", orderNo, orderAmount);
*建议*使用warn日志级别来记录用户输入参数错误的情况,如非必要,请不要在此场景打出 error 级别,避免频繁报警。
*建议*不要输出太多日志信息,避免拖慢应用系统:通常每小时输出到disk的数据量达到上百MiB就已经是上限了。1、并发查询的时,需要将req和resp一起打印,方便一一对应

五、实操:

5.1 最佳实践
Response response = null;
try {
     response = commonTaskTService.closeTask(req);
     log.info("close Task ,req:[{}],response: [{}]",  GsonUtils.toJsonStr(req), GsonUtils.toJsonStr(response));
            if (response == null || response.getCode() != 0) {
                throw new BusinessException(2000, "关闭任务失败~ response: " + GsonUtils.toJsonStr(response));
            }
5.2 方法出错的时候加入error日志
log.error("xxx 内部异常,req:[{}]", GsonUtils.toJsonStr(request), e);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio代码规范是一组规则和准则,旨在统一和优化Android应用程序的代码质量、可读性和可维护性。以下是一些常见的Android Studio代码规范: 1. 命名规范:变量、方法和类应使用有意义的名称,遵循驼峰命名法。类名应该以大写字母开头,变量和方法名应以小写字母开头。 2. 缩进和空格:使用四个空格进行缩进,并确保代码块的可读性。避免使用制表符进行缩进。 3. 注释规范:对重要的代码段添加适当的注释,解释代码的功能、用途和注意事项。注释应该清晰、简洁并易于理解。 4. 类和方法规范:类和方法应该只关注单一责任,并且尽量保持简洁。避免过长的方法和类,可以考虑进行拆分或重构。 5. 布局文件规范:遵循一致的布局文件命名规则,并使用层次结构清晰的XML布局。避免使用过多的嵌套布局,以提高性能。 6. 资源文件规范:遵循命名约定来命名资源文件,例如使用小写字母、下划线和有意义的名称。确保资源文件正确地放置在对应的目录中。 7. 异常处理规范:正确处理异常并提供适当的错误信息。避免捕获异常后不做任何处理或打印简单的错误日志。 8. 导包规范:只导入需要使用的类,避免使用通配符导入所有类。这样可以提高代码的可读性和维护性。 9. 测试规范:编写单元测试来验证代码的正确性,并确保测试覆盖率达到一定的标准。测试代码应该与生产代码分离,并保持可读性和可维护性。 这些只是一些常见的Android Studio代码规范,实际中可能会有更多的规范要求,具体规范可以根据团队或项目的需求来定制。在项目中遵循一致的代码规范可以提高代码质量和团队合作效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值