审计日志基础:日志的定义、类型与级别

说到审计日志,很多同学第一反应就是“记流水账”。其实没那么简单。我做IM审计系统的时候,每天跟几千万条日志打交道,如果基础概念没吃透,后面排查问题简直要命。

所以我觉得,花一章时间把日志的定义、类型和级别彻底说清楚,是非常值得的。嗯,咱们开始。

日志到底是什么?

日志,说白了就是系统运行过程中的事件记录。每一条日志,都是一个不可修改的客观凭证。你想想看,当用户发送了一条消息,系统收到这条消息,转发给服务器,服务器再推送给接收方——整个过程,每一步都应留下痕迹。

IM外发审计日志呢,就专指即时通讯系统里,对外发送消息时产生的审计轨迹。我见过不少团队只记录“发送成功/失败”两个字段,一旦出了问题根本查不到原因。

我的习惯:每一条审计日志至少包含5个W——Who(谁)、When(何时)、Where(从哪里)、What(做了什么)、Why(为什么)。做不到这5W,就不是合格的审计日志。

日志的三大类型

我刚开始接触审计系统时,以为日志只有一种。后来踩了个大坑——我把安全日志误当成系统日志去排查权限问题,查了两天才发现方向错了。从那以后,我只要做审计设计,第一步就是先把日志类型分清楚。

通常我们把审计日志分成三类:

类型 关注点 典型内容 主要来源
操作日志 用户/管理员的行为轨迹 发送消息、删除文件、修改权限、导出数据 应用层(IM客户端、管理后台)
系统日志 系统运行状态与内部事件 服务启动/停止、数据库连接超时、磁盘空间告警 操作系统、中间件、服务框架
安全日志 安全相关事件与异常活动 登录失败、越权访问、恶意消息检测、加密异常 安关、身份认证模块、审计引擎

三类日志各司其职。操作日志回答“人做了什么”,系统日志回答“机器状态怎样”,安全日志回答“有没有被搞”。

一个小技巧:我在设计日志存储方案时,会把操作日志和系统日志分开存储到不同表或索引。原因是操作日志写入更频繁但每条数据量小,系统日志偶尔爆发但字段多。分开后,读写性能好调很多。

日志级别:不是越多越好

日志级别这东西,看起来挺简单——就是分成DEBUG、INFO、WARN、ERROR、FATAL嘛。但实际项目中,我见过因为级别乱用导致硬盘爆掉的案例。

一次线上事故:某个IM服务异常重启后,开发同学为了调试,把日志级别从INFO改成了DEBUG,然后忘了改回来。结果一天的日志量翻了30倍,三天后磁盘满了,整个审计系统都瘫痪了。

所以,级别不是随便设的。我一般按这个规则来:

级别 数值 含义 使用场景
DEBUG 10 调试信息,开发阶段用 开发/测试环境,生产环境除非临时排障否则禁用
INFO 20 正常业务行为,可审计的事件 操作日志、关键流程的进程标记
WARN 30 潜在问题,不影响当前但需关注 重试超过阈值、响应时间变慢、磁盘接近满
ERROR 40 错误事件,功能受影响但系统未崩溃 消息投递失败、数据库查询超时、配置文件缺失
FATAL 50 致命错误,系统可能无法继续 核心服务崩溃、内存溢出、数据损坏
避坑指南:我曾经在项目里犯过一个错——把INFO级别的操作日志全写成了DEBUG,上线后平台默认只保存INFO及以上,结果审计数据一条都没留下。
所以切记:生产环境操作日志至少要用INFO级别,DEBUG只适合临时开关。

把类型和级别放到一起看

类型描述的是“哪类事件”,级别描述的是“这件事的严重程度”。两者交叉,才能定义出一条日志到底长什么样。

举个例子:

  • 一条操作日志,级别可能是INFO(正常发消息)或ERROR(发消息失败)。
  • 一条安全日志,级别可能是WARN(多次登录失败)或FATAL(发现境外IP批量篡改消息)。
  • 一条系统日志,级别可能是WARN(CPU负载过高)或ERROR(MySQL主从延迟超过30秒)。

你看,同一种类型可以跨不同级别,同一个级别也可以出现在不同类型里。这个思路,在之后设计日志过滤规则和告警策略时非常关键。

核心观点:审计日志 ≠ 普通日志。审计日志更强调不可篡改、可追溯、可关联。类型帮你定位“哪出了问题”,级别帮你判断“多严重”。
审计日志分类与级别层次图 审计日志 操作日志 系统日志 安全日志 日志级别金字塔(越高越严重) FATAL ERROR WARN INFO(审计日志核心级别) 三类日志都 可以分布在 不同级别上

这张图左边展示了审计日志的三大类型,右边是日志级别的金字塔。你们可以注意到,INFO级别做了高亮——因为IM外发审计日志的主体,90%以上都是INFO级别的操作日志。但这不代表其他级别不重要。举个例子,如果某条消息投递被WARN级别标记了,那它很可能就是需要人工关注的风险事件。

好了,这章基础概念就聊到这里。记住:分清类型,定好级别,是搭建审计日志系统之前必须想清楚的两件事。不做这一步,后边管你用什么工具,都白搭。