在 Node.js 中“开启进程日志”通常取决于你想记录什么日志以及运行方式。下面按常见场景给你一个清晰指南。
Node.js 本身就会输出:
console.log('info');
console.error('error');
运行:
node app.js
日志会直接打印到终端(stdout / stderr)。
node app.js > app.log 2>&1
>:标准输出2>&1:错误也写入后台运行:
nohup node app.js > app.log 2>&1 &
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'app.log' })
]
});
logger.info('服务启动');
logger.error('出错了');
npm install pino
const pino = require('pino');
const logger = pino({ level: 'info' });
logger.info('hello');
npm install pm2 -g
pm2 start app.js
pm2 logs
~/.pm2/logs/
✅ PM2 自动记录:
Docker 默认收集 stdout:
docker logs <container_id>
确保:
console.log 或日志库输出到 stdoutDEBUG=* node app.js
或在代码:
const debug = require('debug')('app');
debug('debug info');
✅ 使用日志库(winston / pino)
✅ 日志分级(info / warn / error)
✅ 不写 console.log 到生产
✅ 日志文件按日期切割
✅ 用 PM2 / Docker 管理
如果你能告诉我:
我可以给你更精确的配置示例。