在 Linux 上清理 Node.js 日志,通常取决于日志是写在哪里的、用什么方式生成的。下面按常见情况说明:
常见位置:
logs/*.log/var/log/~/.pm2/logs/docker logs可先查找:
find / -name "*.log" 2>/dev/null | grep -i node
rm -f /path/to/node/*.log
示例(PM2):
rm -rf ~/.pm2/logs/*
避免程序因文件被删而报错:
> /path/to/app.log
或:
truncate -s 0 /path/to/app.log
logrotate(系统级)编辑配置:
sudo vim /etc/logrotate.d/nodejs
示例:
/var/www/nodeapp/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
测试:
sudo logrotate -d /etc/logrotate.d/nodejs
pm2 logs
pm2 flush
使用日志库并配置大小限制,例如:
winstonpino示例(winston + 文件轮转):
const { createLogger, transports } = require('winston');
require('winston-daily-rotate-file');
createLogger({
transports: [
new transports.DailyRotateFile({
filename: 'logs/app-%DATE%.log',
maxSize: '10m',
maxFiles: '14d'
})
]
});
docker logs --tail 100 <容器名>
清理:
docker system prune
或限制日志大小(daemon.json):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
> file.loglogrotatepm2 flushrm 正在写入的日志如果你能告诉我:
我可以给你更精确的命令。