日志粒度总结:“应当在哪些地方记录日志,记录时应当记录哪些信息?”

简介: 概述 在浏览 v2 社区进行学习交流时,看到了一篇 “日志的粒度请教?” 的帖子,于是仔细思考了此问题,并且将自己在工作过程中总结的经验分享给大家,欢迎大家互相讨论学习。 内容 总结了以下几点: API 的 I/O 日志,也就是请求参数和响应内容记录日志,这相当于整个系统的大门了,访问日志在排错.

概述

在浏览 v2 社区进行学习交流时,看到了一篇 “日志的粒度请教?” 的帖子,于是仔细思考了此问题,并且将自己在工作过程中总结的经验分享给大家,欢迎大家互相讨论学习。

内容

总结了以下几点:

  1. API 的 I/O 日志,也就是请求参数和响应内容记录日志,这相当于整个系统的大门了,访问日志在排错、性能分析等方面非常有用;
  2. 第三方 API 的 I/O 日志,也就是请求第三方 API 发送了哪些参数,第三方 API 又响应了哪些参数,这有利于分析传递的数据是否正确;
  3. 异常块,所有捕获异常的位置均应当记录异常内容,除非一些用于业务逻辑判断的异常块(例如:利用异常来判断某个字符串是否能转换等);
  4. 非正常请求,例如请求某个 API 报了 403,应当记录 >= WARN 级别的日志,这里和 #1 的区别是,#1 无论正常还是异常均记录请求、响应内容,这里的应当记录更加详细的内容,例如为什么会产生 403 响应,并且日志级别应当更高,方便分析、优化;
  5. 应用启停日志,在启动应用进行初始化时,应当记录各个参数的情况,便于在启动时遇到问题进行定位。同理,在应用停止的时候(特别是异常停止),应当记录详细的运行状况、运行参数等日志;
  6. 其他日志,根据实际业务情况需要,应当记录其他日志,例如调用短信接口时记录短信用量、剩余量等,这样可以通过编写日志报警规则来实现短信余额不足预警功能;

如有有更多关于日志方面的知识和经验,欢迎留言补充

总结

记录日志的目的是为了方便事后分析、问题定位,所以我们在记录日志时应当考虑如何让其他人可以通过日志来分析问题,这类似于编写代码注释,考虑的是让别人能看懂,而不是仅仅自己能看懂。

例如有时候我们记录日志,比如短信剩余量,我们直接记录 logger.info(count) ,很显然这样的日志只能自己能看懂,其他人很难理解,良好的日志示范参考 logger.info("短信发送条数:x条,剩余条数:x条")

版权

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

原创作者 10086@xiaoi.me 发表于阿里云·云栖社区:https://yq.aliyun.com/users/y4epujtm5wye6

扫码关注我,在线与我沟通、咨询
image

转载请保留原文链接以及版权信息

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
394 22
|
SQL 缓存
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
376 1
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
Kubernetes 数据安全/隐私保护 容器
【Azure APIM】APIM Self-Hosted网关中,添加网关日志以记录请求头信息(Request Header / Response Header)
【Azure APIM】APIM Self-Hosted网关中,添加网关日志以记录请求头信息(Request Header / Response Header)
304 3
|
Go 开发者
【应用服务 App Service】App Service发生错误请求时,如何查看IIS Freb日志,从中得知错误所发生的模块,请求中所携带的Header信息
【应用服务 App Service】App Service发生错误请求时,如何查看IIS Freb日志,从中得知错误所发生的模块,请求中所携带的Header信息
307 2
|
存储 Kubernetes 监控
在Docker中,很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
在Docker中,很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
数据挖掘 语音技术
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
300 1