温馨提示×

如何过滤Debian JS日志

小樊
33
2026-07-27 12:10:02
栏目: 编程语言

在 Debian 系统中过滤 JavaScript(JS)相关日志,核心在于确定日志来源(是系统日志、应用日志还是容器日志),然后使用相应的工具进行查看和过滤。

以下是针对不同场景的详细操作指南:

1. 理解 Debian 的日志系统

Debian 通常使用 systemd 作为初始化系统,因此大部分日志由 systemd-journald 管理,可以通过 journalctl 查看。传统的文本日志通常位于 /var/log/ 目录下。

2. 场景一:过滤系统服务中的 JS 日志(Node.js 服务)

如果你的 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"
    

3. 场景二:过滤传统文本日志文件

如果 JS 应用直接将日志输出到文件(如 /var/log/my-app.log 或 Nginx/Apache 的反向代理日志),使用 grep, lessawk

常用命令:

  • 在日志文件中搜索 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
    

4. 场景三:过滤 Docker 容器中的 JS 日志

如果 JS 应用运行在 Docker 中,不要进入容器,直接通过 Docker 命令过滤。

常用命令:

  • 查看容器日志并过滤:

    docker logs <container_id_or_name> 2>&1 | grep -i "error"
    
  • 实时跟踪容器日志:

    docker logs -f <container_id_or_name> | grep -i "js"
    

5. 场景四:过滤浏览器端的 JS 日志(服务器端视角)

如果你是指过滤 Debian 服务器上记录的浏览器 JS 报错(通常通过前端监控 SDK 上报到后端接口,或者 Nginx 记录了前端报错接口):

  • 假设前端通过 POST 请求将报错发送到 /api/log
    # 在 Nginx 访问日志中查找发往报错接口的 POST 请求
    grep "POST /api/log" /var/log/nginx/access.log
    

6. 实用技巧与工具

需求 命令示例
忽略大小写 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

7. 如果是想“清理”或“删除”日志

如果你是想删除过期的 JS 日志以释放空间,请使用 truncaterm切勿直接删除正在写入的日志文件(可能导致磁盘空间不释放)。

  • 清空日志文件(保留文件):
    truncate -s 0 /var/log/my-app.log
    
  • 使用 logrotate(推荐): 配置 /etc/logrotate.d/ 下的配置文件,让系统自动轮转和清理旧日志。

总结

  1. 服务类:用 journalctl -u 服务名 | grep 关键词
  2. 文件类:用 tail -f 文件 | grep 关键词less 文件 后按 / 搜索。
  3. 容器类:用 docker logs 容器名 | grep 关键词

如果你能提供更具体的日志来源(例如:是 PM2 管理的 Node 应用,还是 Nginx 报 500 错误),我可以给出更精确的命令。

0