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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 概述 在浏览 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

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
56 1
|
3月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
2月前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
177 0
|
4月前
|
Kubernetes 数据安全/隐私保护 容器
【Azure APIM】APIM Self-Hosted网关中,添加网关日志以记录请求头信息(Request Header / Response Header)
【Azure APIM】APIM Self-Hosted网关中,添加网关日志以记录请求头信息(Request Header / Response Header)
|
4月前
|
Go 开发者
【应用服务 App Service】App Service发生错误请求时,如何查看IIS Freb日志,从中得知错误所发生的模块,请求中所携带的Header信息
【应用服务 App Service】App Service发生错误请求时,如何查看IIS Freb日志,从中得知错误所发生的模块,请求中所携带的Header信息
|
4月前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
4月前
|
存储 Kubernetes 监控
在Docker中,很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
在Docker中,很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
|
4月前
|
数据挖掘 语音技术
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
|
4月前
|
XML Java Maven
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
这篇文章详细介绍了如何在Spring Boot项目中使用logback进行日志记录,包括Maven依赖配置、logback配置文件的编写,以及实现的日志持久化和控制台输出效果。
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
下一篇
DataWorks