2011-05-12 241 views
2

如何在运行时更改syslog守护程序的日志路径?我的目标是旋转日志文件的每个文件大小或日期,但我没有QNX/POSIX中的logrotate。更改系统日志日志路径

我只是做一个编辑,希望syslogd每次都检查.conf文件,还是有其他的解决方法吗?谢谢。

说明:必须在C或C++中完成,而不是在脚本和控制台命令行中完成端口问题。

回答

1

基于web上找到的一些解决方案的答案,也基于@bills的答案,修改以适应QNX环境。

执行系统调用slay syslogd并执行编辑syslog.conf和再次系统调用syslogd

QNX不提供logrotate,否则除了上面的答案,安装第三方日志记录是另一种解决方法,但不符合我的目的。

更新:经过一番挖掘,QNX在Neutrino操作系统中提供了一种叫做slogger的替代方案。我将投票作为答案,因为它是迎合QNX系统

+2

既然你是新手,这里有一些提示:投票了比尔的答案 - 它引导你的解决方案。可选 - 考虑接受他的答案并将解决方案的详细信息作为编辑添加到答案中。 (这可能是主观意见)。最后,如果您参考网络上的其他解决方案,请链接到它们。 (所有这些咆哮不是一个批评,只是指针...) – Unreason 2011-05-16 08:31:21

+1

好吧,点了 – freonix 2011-05-18 08:47:56

2

找到syslogd的pid。比方说,它是123.然后,在你完成你的编辑, 在命令行中键入下列操作之一后:

kill -HUP 123 
kill -1 123 
+0

谢谢,但我正在寻找的东西,可以在我的代码在运行时执行 – freonix 2011-05-13 02:03:07

+0

你可以使用'kill(2)'系统调用,或者使用'system(3)'。没有办法将信号发送到syslogd或重新启动它。 – 2011-05-13 02:30:28

+0

我想比尔想让我在重新启动PID后重新启动它? – freonix 2011-05-13 03:05:32

0

声音对我说你最好的移植newsyslog您的平台帮助。

+0

非常感谢,但是又一次寻找执行内部代码的解决方案。对不起,如果我以前没有明确澄清。 – freonix 2011-05-13 02:04:39