您现在的位置是:主页 > Web前端技术 > Web前端技术

怎么在Java代码里正确的打日志编程语言

IDCBT2022-01-07服务器技术人已围观

简介本篇内容主要讲解“怎么在Java代码里正确的打日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Java代码里正确的打日志

本篇内容主要讲解“怎么在Java代码里正确的打日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Java代码里正确的打日志”吧!

打日志的正确方式

什么时候应该打日志

    当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。

    当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支

    经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程

基本格式

必须使用参数化信息的方式:

logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol);

对于debug日志,必须判断是否为debug级别后,才进行使用:

if (logger.isDebugEnabled()) {     logger.debug("Processing trade with id: " +id + " symbol: " + symbol); }

不要进行字符串拼接,那样会产生很多String对象,占用空间,影响性能。

反例(不要这么做):

logger.debug("Processing trade with id: " + id + " symbol: " + symbol);

使用[]进行参数变量隔离

如有参数变量,应该写成如下写法:

logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol);

这样的格式写法,可读性更好,对于排查问题更有帮助。

不同级别的使用

ERROR:

基本概念

影响到程序正常运行、当前请求正常运行的异常情况:

    打开配置文件失败

    所有第三方对接的异常(包括第三方返回错误码)

    所有影响功能使用的异常,包括:SQLException和除了业务异常之外的所有异常(RuntimeException和Exception)

不应该出现的情况:

比如要使用Azure传图片,但是Azure未响应

如果有Throwable信息,需要记录完成的堆栈信息:

log.error("获取用户[{}]的用户信息时出错",userName,e);

说明

如果进行了抛出异常操作,请不要记录error日志,由最终处理方进行处理:

反例(不要这么做):

try{     .... }catch(Exception ex){   String errorMessage=String.format("Error while reading information of user [%s]",userName);   logger.error(errorMessage,ex);   throw new UserServiceException(errorMessage,ex); }

标签:

很赞哦! ()

本栏推荐