日志 / 可观测性工具

访问日志分析支持真实的 Nginx 与 Apache 日志格式

粘贴 Nginx 或 Apache 访问日志,选一个格式模板(或直接粘贴自己的 log_format / LogFormat 指令),点击「解析日志」得到一张可过滤的表格。

访问日志分析

示例:
格式模板
过滤

访问日志

解析全部在浏览器本地完成,日志文本不会被上传。

解析结果

解析日志后,这里会出现表格。

粘贴访问日志或载入示例,然后点击「解析日志」。

临时写一条 grep 能捞出几行匹配的日志,但当你需要知道是哪些 IP 在密集请求 /api/login、这批日志里有多少条 5xx,或者有几行根本不符合你服务器的日志格式时,正则写了又推翻的成本就上来了。无论叫它访问日志分析工具还是日志解析器,先把每一行拆成结构化字段,再去过滤和统计,比每次现写正则要快。

适合的场景是:手头有一段从服务器、工单附件或负载均衡器里粘出来的 Nginx / Apache 访问日志,需要看到 IP、状态码、路径、字节数、referer 这些真实字段,而不是一整段文本。所有解析都在当前浏览器标签页里完成,粘贴的内容不会被上传到任何地方。

为什么用这个访问日志分析工具

围绕真实的服务器日志格式设计,不是几个写死的占位符。

直接粘贴真实的 log_format / LogFormat 指令

把 nginx.conf 里的 log_format 指令,或 httpd.conf 里的 LogFormat 那一行原样复制过来,包括 $upstream_response_time、%{X-Forwarded-For}i 这类自定义字段,都会被这个访问日志分析工具直接转成表格列——不用学新语法,也不用在几个预置模板里猜哪个最接近。

一行原始 nginx log_format 指令被转换成对应表格列

坏行会被列出来,不会被悄悄丢掉

一行日志如果不符合选中的格式模板,不会被静默丢弃,也不会只给一句含糊的「可能无法正确解析」。它会带着行号和原始文本出现在坏行列表里,让你能确认到底是哪里没对上,而不是怀疑结果里少了几行。

未匹配的日志行连同行号和原始文本一起列出

从一段原始日志到一张可过滤的表格

三步完成解析、过滤和导出。

01

粘贴日志并选好格式

粘贴一段 Nginx 或 Apache 访问日志原文。拿不准该选哪个预置格式,先载入内置示例——里面故意混了一行不匹配的坏行,方便你先看看坏行是怎么被报出来的。

  • Nginx combined 和 Apache combined 结构完全一样(IP、时间、请求行、状态码、字节数、referer、UA),选哪个都行,解析结果相同
  • 选「自定义」直接接受 log_format / LogFormat 原文,不需要自己写正则
02

点击「解析日志」(或按 Ctrl/Cmd+Enter)

解析不会随打字自动触发——访问日志动辄成百上千行,每敲一个字就重新逐行匹配一遍并不划算。点一次「解析日志」,或用快捷键,表格就会填充出来。

  • 之后再切换格式模板不会自动重新解析;旧表格会保留但淡化显示,直到你再点一次「解析日志」
03

过滤并导出

状态码和路径过滤是在已经解析出的行上即时生效的,不需要再点一次「解析日志」。统计面板(Top IP、Top 路径、状态码分布)会跟着过滤条件一起更新。把当前显示的行按 CSV、JSON 或纯文本复制或下载。

  • 状态码/路径过滤只影响显示和导出的内容,不会改变状态行里报告的解析总行数
跳到解析器

一张表格能比原始文本多给你什么

为排查真实访问日志设计的字段提取、过滤和聚合统计。

四个内置格式预设

Nginx combined、Nginx common、Apache Common Log Format、Apache combined 覆盖了绝大多数服务器的默认配置,不用额外设置就能直接用。

真实的 log_format / LogFormat 指令可直接当自定义模板

nginx.conf 里的任意 $变量,或 httpd.conf 里的任意 % 指令——包括 %{Referer}i 这类具名请求/响应头——都会变成一列,边界按指令原文里字面量的位置来判定。

状态码与路径过滤

把表格缩小到某个状态码区间(2xx–5xx)或精确状态码,以及路径包含某个子串或匹配某个正则的请求,不需要重新解析日志。

Top IP、Top 路径与状态码分布

统计面板会在当前过滤条件下,按状态码计数,并列出请求最多的客户端 IP 和路径——这正是排查流量异常或攻击来源时最先要看的东西。

坏行带行号

每一行不符合所选格式模板的日志都会带着从 1 开始的行号和原始文本被列出来,几行异常日志不会悄悄从统计里消失。

支持 CSV、JSON、纯文本导出

导出的正是当前过滤条件下显示的那些行,列和表格里一致,可以直接丢进表格软件或别的工具继续处理。

怎样算匹配,怎样不算

坏行、自定义格式和目前明确不做的部分,具体行为都在这里。

一行要么完整匹配格式模板,要么算坏行
不存在部分匹配:只要一行从头到尾对不上选中的模板,就会被列进坏行列表(带行号和原文),这一行的任何字段都不会进入表格。
请求行本身不合法,仍然算匹配,只是方法/路径留空
如果一行日志的请求部分是「-」或者不是「METHOD 路径 协议」这种形状,这一行仍然算匹配并出现在表格里——只是这一行的方法、路径、协议留空,因为其余字段(IP、状态码、字节数)已经解析正确。
自定义模板只认已收录的 $变量和 % 指令
遇到未收录的 Apache % 单字母指令,或模板里根本没有 $ 或 % 标记,会给出明确的错误提示,而不是猜一个结果、悄悄生成错误的列。
单次粘贴上限 30 万字符、2 万行
这是为了让浏览器标签页里的解析保持快速和可预期。超过上限时,把日志拆成更小的批次分别解析。
状态码/路径过滤不会改变解析行数或坏行数
过滤只改变哪些已解析的行会被显示、导出和统计。状态行里「已解析 N 行,其中 M 行未匹配」这句话,始终反映的是最近一次完整解析的结果,与当前过滤条件无关。

关于访问日志分析的常见问题

在线解析 Nginx 或 Apache 访问日志之前,大家最常问的问题。

有没有不用安装、免费在线用的访问日志分析工具?

有。把 Nginx 或 Apache 访问日志粘贴到上面,点击「解析日志」,表格立刻就会出现——不需要注册、安装或上传文件。它以 JavaScript 的形式跑在你当前的浏览器标签页里。

把服务器日志粘贴到这种在线工具里安全吗?

粘贴的内容不会被发送到任何地方。解析、过滤、导出全部通过 JavaScript 在你的浏览器本地完成,没有服务端上传、存储或记录——这一点很重要,因为访问日志里通常带着真实的客户端 IP 和请求路径。

Common Log Format 和 combined 格式有什么区别?

Apache 的 Common Log Format(%h %l %u %t \"%r\" %>s %b)没有 referer 和 user-agent 字段。combined 格式在末尾用引号加上了这两项。Nginx 默认自带的 combined 命名格式,字段形状和 Apache 的 combined 格式完全一致。

怎么解析用了自定义 log_format 的 Nginx 访问日志?

把格式模板选成「自定义」,把 nginx.conf 里 log_format 那一行原样粘贴进去,比如 $remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"。每一个 $变量都会按出现顺序变成一列。

为什么有些行进了坏行列表,而不是表格?

一行日志如果从头到尾对不上选中的格式模板,就会被标成坏行——常见原因是访问日志里混进了一行错误日志、日志被截断,或者选错了适合你服务器的预置格式。坏行列表会给出行号和原始文本,方便你确认格式或者检查数据源。

能不能按 IP 地址或 User-Agent 过滤,而不是按状态码和路径?

内置的过滤条件覆盖状态码和路径,这是大多数人最常用来缩小范围的两个字段。IP 地址和 User-Agent 仍然会作为普通表格列出现,也会进入 Top IP 统计;导出成 CSV 或 JSON 之后,你可以再对它们排序或搜索。

能粘贴的访问日志有大小限制吗?

单次粘贴上限是 30 万字符、2 万行,足够放下一段很长的工单附件或几千行的日志尾部。如果是完整的服务器日志文件,先拆成更小的几段,再分别解析。

遇到这个工具解析不对的真实日志行?

现在就做一次访问日志分析

粘贴一段 Nginx 或 Apache 访问日志,几秒内就能得到一张可过滤、可导出的表格——不用上传,也不用注册。

收藏这个免费的访问日志分析工具,下次要排查是谁在高频请求某个接口,或者一批请求为什么失败时直接拿来用。

全部解析都在浏览器本地完成。