在 Node.js 中,日志路径取决于你使用什么日志方式或日志库。下面按常见场景说明如何修改日志路径。
如果你是手动写日志文件:
const fs = require('fs');
const path = require('path');
const logPath = path.join(__dirname, 'logs', 'app.log');
fs.appendFileSync(logPath, 'hello log\n');
✅ 修改方式:
直接修改 logPath 即可,例如:
const logPath = '/var/log/myapp/app.log';
⚠️ 注意目录必须存在,否则会报错。
winston(最常见)npm install winston
const winston = require('winston');
const path = require('path');
const logger = winston.createLogger({
transports: [
new winston.transports.File({
filename: path.join(__dirname, 'logs', 'error.log'),
level: 'error'
}),
new winston.transports.File({
filename: path.join(__dirname, 'logs', 'combined.log')
})
]
});
logger.info('hello winston');
✅ 修改日志路径:
改 filename 即可,例如:
filename: '/data/logs/app.log'
pm2 管理 Node.js 进程如果你用 pm2 启动项目,日志路径由 pm2 控制。
pm2 logs
pm2 start app.js \
--log /var/log/myapp/app.log \
--error /var/log/myapp/error.log \
--out /var/log/myapp/out.log
或 ecosystem.config.js:
module.exports = {
apps: [{
name: 'app',
script: 'app.js',
error_file: '/var/log/myapp/error.log',
out_file: '/var/log/myapp/out.log',
log_file: '/var/log/myapp/app.log'
}]
};
在 Docker 里通常不写本地日志文件,而是输出到 stdout:
console.log('hello');
然后由 Docker / k8s 收集日志。
✅ 如必须写文件,可挂载 volume:
docker run -v /host/logs:/app/logs app
日志路径改为:
/app/logs/app.log
const logPath = process.env.LOG_PATH || 'logs/app.log';
启动时:
LOG_PATH=/var/log/myapp/app.log node app.js
| 场景 | 改哪里 |
|---|---|
| 原生 fs | 文件路径变量 |
| winston | filename |
| pm2 | --log / ecosystem 配置 |
| Docker | stdout 或 volume 挂载 |
如果你能告诉我:
✅ 用的 日志库
✅ 是否 pm2 / Docker
✅ Linux 还是 Windows
我可以给你一个完全贴合你项目的配置示例。