如何覆盖特定新贵服务的 logrotate

如何覆盖特定新贵服务的 logrotate

我有一项myservice使用upstart.它在/var/log/upstrart/目录中创建日志文件。

我的服务生成了太多日志,我必须解决这个问题,直到那时,我必须根据大小而不是时间轮换我的日志文件。我的默认配置logrotate是。

/var/log/upstart/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        nocreate
}

我可以只覆盖这个吗myservice

可以写我的 winlogrotate.conf并添加到/etc/init.d/myservice文件夹中,它将覆盖现有的配置吗?

答案1

基本上,如果myservice使用运行upstart,它有一个配置文件/etc/init/myservice.conf,可能还有一个兼容性文件/etc/init.d/myservice,但后者不是目录。在/etc/init或下有子目录是非常不标准的/etc/init.d

也就是说,更改发行版中的文件是一个非常糟糕的主意,因为您的更改可能会被升级覆盖。所有发行版都有避免这种情况的机制,但你永远不能确定它们是否有效。所以不要搞乱/etc/logrotate.d/upstart或无论你引用的节来自哪里。这意味着您不能将日志文件放在/var/log/upstart.

对您来说最简单的解决方案是创建一个目录/var/log/myservice/,编辑文件/etc/init/myservice.conf以指示您的服务登录/var/log/myservice/myservice.log(这是最棘手的部分,请阅读下文),然后创建一个/etc/logrotate.d/myservice包含您想要的节的文件。

服务器故障有一些关于如何指示守护进程在其他地方记录日志的提示(通常将日志记录从 upstart 转移到 syslog,然后告诉 syslog 在哪里记录)。我无法告诉您更多信息,因为我对您的服务一无所知。

相关内容