博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于log该如何打以便后期排查问题
阅读量:4220 次
发布时间:2019-05-26

本文共 1699 字,大约阅读时间需要 5 分钟。

以前打印log前,没有考虑之后排查问题的方便与否,而只是觉得重要的信息才打印,但是什么是重要信息呢?这里总结了以下几点经验:
1、通过打印log来跟踪一组行为
在前面的博文:
中我写了用logId来跟踪一次request请求所打印的所有log日志,但是对于一个完整的操作步骤,比如,对于一个项目的添加,编辑,删除,以及查询的操作,需要通过一个唯一的id串联起来,比如项目的操作行为,
我通过log记录如下:
@Slf4jpublic class ProjectBehavior {        private String userName = "tim";        public void add() {        int rowAffectNum = addProject(project);        Long projectId = project.getId();        log.info("[userName={} add project and projectId={}]", userName, projectId);    }        public void update() {        updateProject(project);        log.info("[userName={} update project and projectId={}, projectInfo={}]", userName, project.getId(),  JSON.toJsonString(project));    }        public void select() {        selectProject(project);        log.info("[userName={} select project, projectId={}]", userName, project.getId());    }        public void delete() {        deleteProject(project);        log.info("[userName={} delete project and projectId={}, projectInfo={}]", userName, project.getId(), JSON.toJsonString(project))    }}
分析:
在上述的代码中,所有的增删改查的行为的唯一标识是projectId=具体的项目id,因此,我们可以根据项目的id将所有的行为贯穿起来。注意:在增加项目的操作的时候,这里需要在添加的时候返回项目的主键id,具体操作可以参考我的这篇博文《MySQL 插入数据后返回自增id的方法》。
2、log打印warn或者error的信息
log在打印warn或者error信息时,应该尽可能的包括入参,以及返回值的错误信息。比如:
try {    insertData(project);} catch (Exception e) {    log.error("input param={}, error={}", JSON.toJsonString(project), e );}
3、log打印controller层的入参和返回的数据
@GetMapping(value = "/test")public String test(User user) {    log.info("[URI=/test][input param={}]", JSON.toJsonString(user));    // 业务数据处理    Project project = doSomeThing();    log.info("[URI=/test][return data={}]",JSON.toJsonString(project));}

每个控制层最好打打印好入参和返回的数据(数据太大只返回部分数据)

转载地址:http://vgomi.baihongyu.com/

你可能感兴趣的文章
linux中nohup和&有什么区别?
查看>>
Linux下C程序插入执行shell脚本
查看>>
shell脚本执行方法
查看>>
切割nohup.out的脚本
查看>>
Linux下如何不停止服务,清空nohup.out文件
查看>>
Linux split命令参数及用法详解---linux分割文件命令
查看>>
Linux split cat 分割和合并文件的指令
查看>>
Linux中执行shell脚本的4种方法总结
查看>>
Ubuntu终端多窗口分屏Terminator
查看>>
linux下的find文件查找命令与grep文件内容查找命令
查看>>
linux中快速清空文件内容的几种方法
查看>>
MySQL数据库改名的三种方法
查看>>
printf()详解之终极无惑
查看>>
logrotate 配置文件强制为 0644 属性
查看>>
使用 logrotate对centos中各服务程序的日志文件进行转储
查看>>
Qt程序打包发布方法(使用官方提供的windeployqt工具)
查看>>
Select中DISTINCT关键字的用法?
查看>>
一次segfault错误的排查过程
查看>>
利用dmesg和addr2line来重现bug
查看>>
addr2line命令使用
查看>>