每次 newsyslog 轮换日志文件后,syslog 都会停止登录该文件。直到 syslogd 重新启动完成。
(myserver:wheel)# logger -p local1.info -t myprocess "hello thiru"; ll myfile.log; cat myfile.log
-rw-r--r-- 1 root wheel 0B Nov 10 11:26 myfile.log
(myserver:wheel)# /etc/rc.d/syslogd restart
Stopping syslogd.
Starting syslogd.
(myserver:wheel)# logger -p local1.info -t myprocess "hello thiru"; ll myfile.log; cat myfile.log
-rw-r--r-- 1 root wheel 44B Nov 10 12:04 myfile.log
Nov 10 12:04:31 myserver myprocess: hello thiru
(myserver:wheel)#
在
Linux
(使用 logrotate
)上,我们可以通过在 logroate conf 的 syslog/rsyslog restart
部分执行 postrotate
来解决这个问题。postrotate
中是否有类似于 newsyslog
的东西?编辑:
Syslog 和 newsyslog conf 文件:
(TPC-E11-36:wheel)# cat /etc/newsyslog.d/newsyslog-myprocess.conf
/var/log/myfile.log 644 20 10000 * Z
(TPC-E11-36:wheel)# cat /etc/syslog.d/syslog-myprocess.conf
!myprocess
local1.info /var/log/myfile.log
(TPC-E11-36:wheel)#
最佳答案
将 pidfile 的路径添加到 /etc/newsyslog.conf
中,如果需要,则添加一个信号,例如代表 1
的 SIGHUP
,有关此处的 newsyslog 的更多信息:https://www.freebsd.org/doc/handbook/configtuning-syslog.html
格式/示例是这样的:
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/your-app.log root:wheel 600 7 * @T00 GBJC /var/run/your-app.pid 1
另请参阅此答案:https://serverfault.com/a/701563/94862