如何快速查看Debian系统JS日志,轻松排查问题?
- 内容介绍
- 文章标签
- 相关推荐
在 Debian 环境下JavaScript 日志往往散落在浏览器控制台、程序日志、或自定义文件中。常见痛点包括:
- 日志量大,关键错误被淹没。
- 每次手动 grep、tail 都要记忆繁琐命令。
- 不同运行环境使用的查看方式不统一。
- 缺乏实时监控手段,导致问题排查耗时。
掌握一套统一且高效的查看方法。能让你“一眼看穿”问题根源,明显提高调试效率。
1. 使用 Chrome/Chromium 开发者工具
痛点:每次打开页面都要手动定位 Console,容易遗漏历史记录。其实,
从操作步骤来看。
- 在目标页面上右键 → “检查”。不过,
-
切换到
Console标签页。 - 如需持久化,可勾选 “Preserve log”。这样刷新页面后日志仍会保留。
-
使用过滤框输入关键词(如
Error,warn) 快速定位异常。
2. 将浏览器日志同步到程序日志
痛点:浏览器关闭后日志丢失,无法统一审计。
从实现思路来看。利用 console.log/.error 将信息发送到本地服务器,再由 Node/rsyslog 写入程序日志。老实说,再看示例代码,
// 前端
function sendLog {
fetch('http://localhost:3000/log'。
{
至于method,'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify
});}
console.error = => sendLog;console.log = => sendLog;
从服务器端示例来看,
// server.js
const express = require;const fs = require;const app = express;app.use),app.post => {
const {level,msg} = req.body;const line = `${new Date.toISOString} ${msg}
`;fs.appendFileSync;res.sendStatus;}),app.listen;其实,
这样就可以通过程序工具统一查看浏览器产生的 JS 日志。
1. 直接读取程序日志中的 Node 信息
痛点:Tail + grep 每次都要敲完整方法,容易写错。不过,
# 实时监控并过滤关键字
sudo journalctl -f -u my-js-app | grep -i "error"
# 或者直接从 syslog 中筛选
sudo tail -f /var/log/syslog | grep -i "node"
2. 查看单独应用的日志文件
痛点:App log 文件分散。不知道准确方法,
# 常用快捷方式
alias jslog='sudo tail -f /opt/myapp/log/app.log'
alias jserr='sudo grep -i "error" /opt/myapp/log/app.log'
# 使用示例
jslog # 实时输出
jserr | less # 分页搜索错误
3. 使用更强大的过滤工具:ripgrep & multitail
# 安装
sudo apt-get install ripgrep multitail
# ripgrep 高亮搜索
rg --color=always -i "exception" /opt/myapp/log/app.log
# multitail 同时观察多个文件
multitail /var/log/syslog /opt/myapp/log/app.log
1. 创建标准化的 systemd 单元文件
Description=My JavaScript Application
After=network.target
ExecStart=/usr/bin/node /opt/myapp/index.js
WorkingDirectory=/opt/myapp
User=www-data
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my-js-app
WantedBy=multi-user.target
2. 常用 journalctl 命令速查表
- Pain: 想要最近几分钟的错误,却只能一次性拉满全量日志。
- Solução: 使用时间过滤参数。
# 实时跟踪
sudo journalctl -u my-js-app -f
# 查看过去 10 分钟内的所有记录
sudo journalctl -u my-js-app --since "10 minutes ago"
# 按关键字过滤,只看 ERROR 等级
sudo journalctl -u my-js-app | grep -i "error"
# 导出为文件便于离线分析
sudo journalctl -u my-js-app --since "2025-11-01"> js-20251101.log
3. 配合 Logrotate 防止单个 log 文件膨胀
/etc/logrotate.d/my-js-app:
# 每周轮转一次保留4周
/var/log/syslog {
weekly
rotate 4
compress
missingok
notifempty
}
# 若使用自定义文件:
/opt/myapp/log/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}
-
#1:一键实时监控所有 JS 日志 使用
alert="my-js-app"。接下来执行:watch -n1 "journalctl -u my-js-app -f | grep --color=auto -i error" -
#2:快速定位特定请求上下文 在代码里加入统一前缀,如
,接下来通过 grep 搜索该前缀即可定位整条调用链。 -
#3:跨网站统一入口 把所有入口都写入同一个 Syslog Identifier,这样只需要一条命令就能看到全部相关输出:
sudo journalctl -t my-js-app -f -
#4:避免“找不到最新日志”尴尬 确保你的服务单元里有
NoNewPrivileges=yes。KilledBySignal=SIGTERM,并开启Status=active,这样 systemd 会自动把 stdout/stderr 收进 journald,不会遗漏任何打印信息。 -
#5:大文件秒搜索 当 log 文件>10GB 时用 :
rg --max-count=20 --no-line-number "Exception" /opt/myapp/log/app.log | less -R
在 Debian 环境下JavaScript 日志往往散落在浏览器控制台、程序日志、或自定义文件中。常见痛点包括:
- 日志量大,关键错误被淹没。
- 每次手动 grep、tail 都要记忆繁琐命令。
- 不同运行环境使用的查看方式不统一。
- 缺乏实时监控手段,导致问题排查耗时。
掌握一套统一且高效的查看方法。能让你“一眼看穿”问题根源,明显提高调试效率。
1. 使用 Chrome/Chromium 开发者工具
痛点:每次打开页面都要手动定位 Console,容易遗漏历史记录。其实,
从操作步骤来看。
- 在目标页面上右键 → “检查”。不过,
-
切换到
Console标签页。 - 如需持久化,可勾选 “Preserve log”。这样刷新页面后日志仍会保留。
-
使用过滤框输入关键词(如
Error,warn) 快速定位异常。
2. 将浏览器日志同步到程序日志
痛点:浏览器关闭后日志丢失,无法统一审计。
从实现思路来看。利用 console.log/.error 将信息发送到本地服务器,再由 Node/rsyslog 写入程序日志。老实说,再看示例代码,
// 前端
function sendLog {
fetch('http://localhost:3000/log'。
{
至于method,'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify
});}
console.error = => sendLog;console.log = => sendLog;
从服务器端示例来看,
// server.js
const express = require;const fs = require;const app = express;app.use),app.post => {
const {level,msg} = req.body;const line = `${new Date.toISOString} ${msg}
`;fs.appendFileSync;res.sendStatus;}),app.listen;其实,
这样就可以通过程序工具统一查看浏览器产生的 JS 日志。
1. 直接读取程序日志中的 Node 信息
痛点:Tail + grep 每次都要敲完整方法,容易写错。不过,
# 实时监控并过滤关键字
sudo journalctl -f -u my-js-app | grep -i "error"
# 或者直接从 syslog 中筛选
sudo tail -f /var/log/syslog | grep -i "node"
2. 查看单独应用的日志文件
痛点:App log 文件分散。不知道准确方法,
# 常用快捷方式
alias jslog='sudo tail -f /opt/myapp/log/app.log'
alias jserr='sudo grep -i "error" /opt/myapp/log/app.log'
# 使用示例
jslog # 实时输出
jserr | less # 分页搜索错误
3. 使用更强大的过滤工具:ripgrep & multitail
# 安装
sudo apt-get install ripgrep multitail
# ripgrep 高亮搜索
rg --color=always -i "exception" /opt/myapp/log/app.log
# multitail 同时观察多个文件
multitail /var/log/syslog /opt/myapp/log/app.log
1. 创建标准化的 systemd 单元文件
Description=My JavaScript Application
After=network.target
ExecStart=/usr/bin/node /opt/myapp/index.js
WorkingDirectory=/opt/myapp
User=www-data
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my-js-app
WantedBy=multi-user.target
2. 常用 journalctl 命令速查表
- Pain: 想要最近几分钟的错误,却只能一次性拉满全量日志。
- Solução: 使用时间过滤参数。
# 实时跟踪
sudo journalctl -u my-js-app -f
# 查看过去 10 分钟内的所有记录
sudo journalctl -u my-js-app --since "10 minutes ago"
# 按关键字过滤,只看 ERROR 等级
sudo journalctl -u my-js-app | grep -i "error"
# 导出为文件便于离线分析
sudo journalctl -u my-js-app --since "2025-11-01"> js-20251101.log
3. 配合 Logrotate 防止单个 log 文件膨胀
/etc/logrotate.d/my-js-app:
# 每周轮转一次保留4周
/var/log/syslog {
weekly
rotate 4
compress
missingok
notifempty
}
# 若使用自定义文件:
/opt/myapp/log/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}
-
#1:一键实时监控所有 JS 日志 使用
alert="my-js-app"。接下来执行:watch -n1 "journalctl -u my-js-app -f | grep --color=auto -i error" -
#2:快速定位特定请求上下文 在代码里加入统一前缀,如
,接下来通过 grep 搜索该前缀即可定位整条调用链。 -
#3:跨网站统一入口 把所有入口都写入同一个 Syslog Identifier,这样只需要一条命令就能看到全部相关输出:
sudo journalctl -t my-js-app -f -
#4:避免“找不到最新日志”尴尬 确保你的服务单元里有
NoNewPrivileges=yes。KilledBySignal=SIGTERM,并开启Status=active,这样 systemd 会自动把 stdout/stderr 收进 journald,不会遗漏任何打印信息。 -
#5:大文件秒搜索 当 log 文件>10GB 时用 :
rg --max-count=20 --no-line-number "Exception" /opt/myapp/log/app.log | less -R

