如何覆蓋特定新貴服務的 logrotate
我有一個
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
執行 usingupstart
,它有一個配置文件/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 在哪裡記錄)。我不能告訴你更多,因為我對你的服務一無所知。