日志解析与脱敏
把生产日志文件拖进来,得到一张可筛选的表格:Apache/Nginx、JSON Lines 和 syslog 自动识别,敏感值自动脱敏,导出干净的 CSV、JSON 或文本。文件永远不会离开你的浏览器——解析在本地进行,这正是这个页面存在的全部理由。
- 已读取行数
- 保留的行数
- 错误 / 警告
- 时间范围
| 时间 | 级别 | 来源 | 消息 |
|---|
这个页面如何处理你的日志
日志文件只有变成表格才有用:一列是时间,一列是级别,消息不用滚动原始文本就能读。本页面把每一行解析成这些列,统计各级别的数量,并让你筛选出真正重要的行——只看错误,或者所有提到某个主机名、某个路径、某个用户的行。表格显示前 1,000 条匹配行;计数覆盖读取的全部内容,所以你始终知道筛选器藏起的是九行还是九千行。
文件按 1 MB 分块读取,而不是作为一个整字符串加载,这样几 MB 的生产日志在加载时不会冻住标签页。解析出的前 20,000 行会保留下来用于筛选和导出;超过这个数量后,页面仍会统计每一行并如实报告总数。如果你的文件比这还大,请先筛选再导出——或者把文件拆开跑两次。整个流程不触碰任何网络:File API 读取字节,解析器在页面中运行,导出也由同一批本地行组装而成。
脱敏是模式匹配,不是保证
脱敏会隐藏共享日志中最常泄露的值:邮箱地址、IP 地址、Bearer 令牌、AWS 访问密钥 ID,以及写在 api_key、secret、password 或 token 标签后面的值。它默认开启,同时作用于表格和每一种导出格式。但它只是模式匹配,模式会漏掉东西——格式不寻常的令牌、跨行拆开的密钥、能标识某个客户的内部主机名。把导出当作“更安全”,而不是“安全”:发送到任何地方之前先通读一遍,尤其是发到组织之外。如果你为了自己调试需要原始值,关掉脱敏即可——开关就在表格上方。
正是这个区别,决定了这个页面存在的意义。把生产日志粘贴到聊天窗口或在线查看器里,等于把它的内容永久交给第三方;在本地解析,则什么都不交给任何人。托管查看器的便利,永远不值得拿日志的内容去换,而一个从不发出请求的浏览器标签页,是确知这一点的最简单办法。
常见问题
我的日志文件会离开浏览器吗?
不会。文件通过 File API 读取并在本地解析;什么都不上传,完全没有服务器调用。这正是关键所在:生产日志里含有地址、令牌和用户数据,这些不应该被粘贴到聊天窗口,也不应该上传到随手找到的查看器。
能识别哪些日志格式?
Apache/Nginx combined 访问日志、JSON Lines(每行一个 JSON 对象)、syslog 行,以及一种通用兜底模式——扫描任意行中的级别关键词。自动检测依次尝试 combined、JSON、syslog、通用模式——如果自动检测猜错,也可以显式指定格式。
脱敏到底隐藏什么?
邮箱地址、IPv4 和 IPv6 地址、Bearer 令牌、AWS 访问密钥 ID,以及 api_key/secret/password/token 标签之后的值。它是模式匹配,不是保证:不寻常的格式会漏过去,所以把导出发送到任何地方之前先检查一遍。脱敏默认开启,同时作用于表格和导出。
能打开多大的文件?
文件按 1 MB 分块读取,几 MB 的日志不会冻住标签页。所有行都会被计数,解析出的前 20,000 行保留用于筛选和导出,表格显示前 1,000 条匹配行。更大的任务请先筛选,再导出。
为什么有些行看起来像错误,级别却是“info”?
访问日志没有级别字段,所以级别由 HTTP 状态推断:5xx 为 error,4xx 为 warning,其余为 info。JSON 行在有自己的 level 字段时使用它。如果一行看起来被分错了类,它旁边的状态码或消息文本才是事实依据。