在 Debian 系统中过滤 JavaScript(JS)相关日志,核心在于确定日志来源(是系统日志、应用日志还是容器日志),然后使用相应的工具进行查看和过滤。
以下是针对不同场景的详细操作指南:
Debian 通常使用 systemd 作为初始化系统,因此大部分日志由 systemd-journald 管理,可以通过 journalctl 查看。传统的文本日志通常位于 /var/log/ 目录下。
如果你的 JS 应用是作为系统服务运行的(例如通过 systemctl 管理的 Node.js 应用),请使用 journalctl。
常用命令:
查看特定服务的日志(实时滚动):
sudo journalctl -u your-service-name.service -f
(将 your-service-name 替换为你的服务名,如 node-app)
过滤包含 “error” 或 “js” 关键字的日志:
sudo journalctl -u your-service-name.service | grep -i "error\|js\|exception"
查看今天的日志并过滤:
sudo journalctl --since today -u your-service-name.service | grep -E "JS|TypeError|ReferenceError"
如果 JS 应用直接将日志输出到文件(如 /var/log/my-app.log 或 Nginx/Apache 的反向代理日志),使用 grep, less 或 awk。
常用命令:
在日志文件中搜索 JS 错误:
# 搜索常见 JS 错误关键字
grep -i "uncaught exception\|referenceerror\|typeerror\|syntaxerror" /var/log/my-app.log
查看实时日志流并过滤:
tail -f /var/log/my-app.log | grep --line-buffered -i "error"
过滤 Nginx/Apache 访问日志中的 JS 请求(排查 404 或 500 错误):
# 查看访问 .js 文件失败的请求
awk '$7 ~ /\.js$/ && $9 == 404' /var/log/nginx/access.log
如果 JS 应用运行在 Docker 中,不要进入容器,直接通过 Docker 命令过滤。
常用命令:
查看容器日志并过滤:
docker logs <container_id_or_name> 2>&1 | grep -i "error"
实时跟踪容器日志:
docker logs -f <container_id_or_name> | grep -i "js"
如果你是指过滤 Debian 服务器上记录的浏览器 JS 报错(通常通过前端监控 SDK 上报到后端接口,或者 Nginx 记录了前端报错接口):
/api/log:# 在 Nginx 访问日志中查找发往报错接口的 POST 请求
grep "POST /api/log" /var/log/nginx/access.log
| 需求 | 命令示例 |
|---|---|
| 忽略大小写 | grep -i "javascript" |
| 显示匹配行及后续5行 | grep -A 5 "Fatal Error" file.log |
| 显示匹配行及前5行 | grep -B 5 "Fatal Error" file.log |
| 按时间范围过滤 | sed -n '/2023-10-27 10:00/,/2023-10-27 11:00/p' file.log |
| 高亮显示 | grep --color=auto "Error" file.log |
如果你是想删除过期的 JS 日志以释放空间,请使用 truncate 或 rm,切勿直接删除正在写入的日志文件(可能导致磁盘空间不释放)。
truncate -s 0 /var/log/my-app.log
/etc/logrotate.d/ 下的配置文件,让系统自动轮转和清理旧日志。journalctl -u 服务名 | grep 关键词。tail -f 文件 | grep 关键词 或 less 文件 后按 / 搜索。docker logs 容器名 | grep 关键词。如果你能提供更具体的日志来源(例如:是 PM2 管理的 Node 应用,还是 Nginx 报 500 错误),我可以给出更精确的命令。