java日志使用笔记

为什么要打日志?

日志是非常重要的,好的日志可以快速定位问题。
试想如果你一行日志也不打,服务器出现问题,是不是很麻爪。

日志分为哪几种

(1) 调试开发日志

目的是开发期调试程序使用,这种日志量比较大,且没有什么实质性的意义,只应该出现在开发期,而不应该在项目上线之后输出。

(2) 用户行为日志

这种类型的日志,记录用户的操作行为,用于大数据分析,比如监控、风控、推荐等等。这种日志,一般是给其他团队分析使用,而且可能是多个团队,因此一般会有一定的格式要求,开发者应该按照这个格式来记录,便于其他团队的使用。当然,要记录哪些行为、操作,一般也是约定好的,因此,开发者主要是执行的角色。这种日志,又叫事件上报,或埋点。

(3)程序运行日志

记录程序的运行状况,特别是非预期的行为、异常情况,这种日志,主要是给开发、维护人员使用。什么时候记录,记录什么内容,完全取决于开发人员,开发者具有高度自主性。本文讨论的主要也是指这种类型的日志,因为作为一个服务端开发、运维人员,程序运行日志往往是解决线上问题的救命稻草。

(4)记录系统或者机器的状态

比如网络请求、系统CPU、内存、IO使用情况等等,这种日志主要是给运维人员使用,生成各种更直观的展现形式,在系统出问题的时候报警。

作者:果汁凉茶丶
链接:https://www.jianshu.com/p/d763218f9aaa
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

运行日志可以反馈哪些信息

(1) 通用信息

时间,日志类型,所在类等 。 (日志框架一般都带了)

(2) 进度信息

比如一个服务有5个步骤,是否开始这个服务。执行到了哪步等。

log.info("打开冰箱门");
log.info("把大象放进去");
log.info("关上冰箱门");

(3) 异常信息

log.error("什么操作发生了异常,异常信息为: "+e.toString())

(4) 接口间的日志(传递唯一标识)

我在这台机器上调用服务,服务是在另外一台机器。所以需要传递唯一标识。可以传递一个uuid,便于找到问题所在。如代码:

扫描二维码关注公众号,回复: 9092018 查看本文章
String uuid = UUID.randomUUID().toString();
logger.error("保存操作异常,id为:{},异常信息为:{}", uuid, e);
return new Result<>(ApiContants.ERROR,"id为: "+uuid);

这样我可能没有另一台服务的权限,但可以提供uuid给服务器的同事查问题。

发布了422 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/enthan809882/article/details/104266804