在 Debian 上,Node.js 本身的日志路径并不是由 Node 统一管理的,而是由你的应用、进程管理器或系统服务决定的。下面按常见场景说明如何“配置 Node.js 日志路径”。
如果你用 systemd 启动 Node.js 服务(如 /etc/systemd/system/node-app.service):
journalctl -u node-app.service
日志由 systemd 管理,没有独立文件。
在 service 文件中重定向输出:
[Service]
ExecStart=/usr/bin/node /var/www/app/index.js >> /var/log/node-app/app.log 2>&1
或分开 stdout / stderr:
ExecStart=/usr/bin/node /var/www/app/index.js
StandardOutput=append:/var/log/node-app/app.out.log
StandardError=append:/var/log/node-app/app.err.log
然后:
sudo mkdir -p /var/log/node-app
sudo systemctl daemon-reload
sudo systemctl restart node-app
~/.pm2/logs/
pm2 start app.js \
--name myapp \
--log /var/log/node-app/app.log \
--error /var/log/node-app/err.log \
--output /var/log/node-app/out.log
pm2 reload myapp
pm2 logs myapp
不依赖外部工具,自己写文件:
const fs = require('fs');
const path = require('path');
const logStream = fs.createWriteStream('/var/log/node-app/app.log', { flags: 'a' });
console.log = (msg) => {
logStream.write(`[${new Date().toISOString()}] ${msg}\n`);
};
或使用日志库(推荐):
winstonpino示例(winston):
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: '/var/log/node-app/app.log' })
]
});
如果是 Node + Nginx:
/var/log/nginx/access.log
/var/log/nginx/error.log
确保目录可写:
sudo chown -R node:node /var/log/node-app
或运行用户:
ps aux | grep node
| 方式 | 日志路径配置位置 |
|---|---|
| systemd | service 文件 |
| PM2 | 启动参数 |
| 代码 | winston / fs |
| Nginx | /var/log/nginx |
如果你能告诉我:
我可以给你一份可直接用的配置文件。