在 Node.js 部署于 Linux 环境下,“开启日志”通常分 应用层日志 和 系统/进程层日志 两种情况。下面按常见场景给你说明。
console.log('info');
console.error('error');
启动:
node app.js
日志直接在终端显示。
node app.js > app.log 2>&1
>:标准输出2>&1:错误也写入持续追加:
node app.js >> app.log 2>&1
常用库:
winstonpinolog4js示例(winston):
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: 'app.log' })
]
});
logger.info('server started');
npm install -g pm2
pm2 start app.js
查看日志:
pm2 logs
日志默认位置:
~/.pm2/logs/
配置日志大小(防止爆盘):
pm2 start app.js --log /var/log/node/app.log
# /etc/systemd/system/node-app.service
[Unit]
Description=Node App
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
WorkingDirectory=/opt/app
User=node
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start node-app
journalctl -u node-app -f
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
DEBUG=* node app.js
或:
NODE_DEBUG=http,net node app.js
| 场景 | 推荐方式 |
|---|---|
| 本地调试 | console |
| 生产运行 | PM2 / systemd |
| 长期存储 | 文件 + logrotate |
| 高并发 | pino |
如果你能告诉我:
我可以直接给你一份可复制的配置。