在 Node.js 中,“日志路径”具体取决于你用的是哪套日志方案。下面按常见场景给你说明,基本都能覆盖 90% 的情况。
Node.js 本身没有默认日志路径,日志写在哪里,取决于你代码怎么写。
const fs = require('fs');
const path = require('path');
const logPath = path.join(__dirname, 'logs', 'app.log');
fs.appendFileSync(logPath, `[${new Date().toISOString()}] hello\n`);
✅ 修改方式:
直接改 logPath 即可。
const logPath = '/data/logs/node/app.log';
Winston 默认输出到 console,不会写文件。
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({
filename: '/data/logs/node/app.log' // ✅ 日志路径
}),
new winston.transports.Console()
]
});
logger.info('hello world');
✅ 修改路径:
直接改 filename 即可。
如果你用 PM2 管理 Node 应用:
~/.pm2/logs/
pm2 logs
pm2 info app
pm2 start app.js \
--output /data/logs/node/out.log \
--error /data/logs/node/err.log
或 ecosystem.config.js:
module.exports = {
apps: [{
name: 'app',
script: 'app.js',
out_file: '/data/logs/node/out.log',
error_file: '/data/logs/node/err.log',
merge_logs: true
}]
};
不要写文件,直接输出到 stdout / stderr
console.log('info');
console.error('error');
Docker 日志路径由 Docker 管理:
docker logs 容器名
/data/logs/node/app.log
并确保挂载目录:
docker run -v /data/logs/node:/data/logs/node node-app
Node 本身不处理 access log,通常是:
Nginx 日志路径:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
mkdir -p /data/logs/node
chmod 777 /data/logs/node
pm2 restart app
| 场景 | 改哪里 |
|---|---|
| 原生 fs | 改文件路径 |
| Winston | transports.File.filename |
| PM2 | --output / --error |
| Docker | stdout 或挂载目录 |
| Nginx | nginx.conf |
如果你愿意,可以告诉我:
我可以直接给你一套完整可用配置。