在Linux系统中,Node.js应用的日志存储位置需要根据日志类型、安全性和管理需求综合考虑。以下是专业建议和常见方案:
系统日志目录
/var/log/
是Linux存放系统日志的标准目录,建议为应用创建子目录:
sudo mkdir /var/log/your_node_app
sudo chown -R $USER:$USER /var/log/your_node_app # 确保Node进程有写入权限
应用专属目录
若应用部署在用户目录下(如/home/user/app
),可在项目内创建logs/
目录:
mkdir ~/your_node_app/logs
logrotate
(Linux内置)/etc/logrotate.d/your_node_app
):
conf
/var/log/your_node_app/*.log {
daily
rotate 7
compress
missingok
notifempty
create 644 nodeuser nodeuser
}
stdout/stderr
,通过Docker日志驱动(如json-file
或journald
)收集。bash
docker run -v /host/logs:/app/logs your_image
rsyslog
或syslog-ng
服务。const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({
filename: '/var/log/your_node_app/combined.log',
maxsize: 1024 * 1024 * 10, // 10MB
}),
new winston.transports.Console()
]
});
logger.info('Log message');
# 启动时指定日志路径
pm2 start app.js --log /var/log/your_node_app/app.log
# 自动日志轮转
pm2 install pm2-logrotate
权限问题
chown
或chmod
)。/var/log/
而不配置权限。日志分级存储
access.log
、error.log
和debug.log
,便于排查问题。敏感信息过滤
监控告警
logwatch
或Sentry
)监控错误日志并及时报警。logs/
目录 + Winston控制台输出。/var/log/
+ logrotate
+ ELK/Syslog集中管理。通过合理规划日志存储,可显著降低运维复杂度并提升故障排查效率。