Linux

如何覆蓋特定新貴服務的 logrotate

  • February 9, 2017

我有一個myservice使用upstart. /var/log/upstrart/它在目錄中創建日誌文件。

我的服務生成了太多日誌,我必須對此進行處理,直到那時,我必鬚根據大小而不是時間來輪換我的日誌文件。我的預設配置logrotate是。

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

我可以只覆蓋這個myservice嗎?

可以寫我的贏logrotate.conf並添加到/etc/init.d/myservice文件夾中,它會覆蓋現有的配置嗎?

基本上,如果myservice執行 using upstart,它有一個配置文件/etc/init/myservice.conf,可能還有一個兼容性文件/etc/init.d/myservice,但後者不是目錄。/etc/init在or下有子目錄是非常不標準的/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使用您想要的節創建一個文件。

Serverfault有一些關於如何指示你的守護程序在其他地方記錄日誌的提示(你通常將日誌從新貴轉移到 syslog,然後告訴 syslog 在哪裡記錄)。我不能告訴你更多,因為我對你的服務一無所知。

引用自:https://unix.stackexchange.com/questions/343842