syslog在日志轮换后停止记录

时间:2016-11-10 17:28:57

标签: linux logging freebsd syslog logrotate

每次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)#

2 个答案:

答案 0 :(得分:1)

将pid文件的路径添加到/etc/newsyslog.conf,如果需要,还可以显示代表1的{​​{1}}信号,有关newsyslog的更多信息,请访问:https://www.freebsd.org/doc/handbook/configtuning-syslog.html

格式/示例如下:

SIGHUP

另请参阅此答案:https://serverfault.com/a/701563/94862

答案 1 :(得分:1)

newsyslog 中实际上有类似于 postrotate 的东西,它是配置文件中的 R 标志与 path_to_pid_cmd_file(在 FreeBSD 的手册条目中称为新闻日志.conf(5))。设置此标志后,所提供的路径将不会被解释为 PID 文件的路径,而是会被解释为将在日志轮换完成后执行的脚本(例如 shell 脚本)的路径。

您甚至可以将参数传递给脚本,但为此您必须使用 IFS 变量(由空格分隔,该参数将被解释为信号并可能引发错误)。

# logfilename       [owner:group] mode count size  when  flags [/cmd_file]
/var/log/myfile.log root:wheel    644  20    10000 *     ZR    /path/to/my/script${IFS}myargument