问题
I use forever to launch my nodeJs server and I choose the log file :
forever -l /home/api/log/api_output.log start server.js
I use logrotate to move logfile every day (like advise here : NodeJS/Forever archive logs), after one day my directory is like this :
-rw-r--r-- 1 root root 0 avril 18 12:00 api_output.log
-rw-r--r-- 1 root root 95492 avril 18 12:01 api_output.log-20140418
So, rotation is working, but the logs messages are now written in api_output.log-20140418, instead of api_output.log
Maybe somebody can help me ?
回答1:
I forgot copytruncate option in my config file, now it's working :
/etc/logrotate.d/api :
/home/api/log/api_output.log {
#size 50k
daily
dateext
missingok
rotate 7
compress
delaycompress
notifempty
#create 644 root
copytruncate
}
回答2:
i think it's because of living stream between forever and the log file.
forever use file stream to log file. and you renamed this file by logrotate. but stream don't change. so log messages were written in api_output.log-20140418.
if you want to change stream, you should rotate by node.js code, or use pipeline.
来源:https://stackoverflow.com/questions/23152038/forever-log-and-logrotate