2012-02-24 83 views
4

Plone產品安裝的日誌旋轉將是一個不錯的功能。關於將日誌旋轉整合到Plone中的最佳做法是什麼?使用Plone進行日誌旋轉

我找到了這篇文章:http://encolpe.wordpress.com/2010/06/17/how-to-get-log-files-rotate-in-zope-with-buildout/但是因爲在plone.org上沒有任何文檔,所以我想平安社區瞭解最佳實踐,不要填滿他們的硬盤。

+0

查看我的答案下面...這將是最簡單的選擇..只需添加2行到您的構建 – sureshvv 2012-11-19 04:37:50

回答

4

類似於勞倫斯上面所說的,但保持大小在10mb以下並且只保存1箇舊文件。

<eventlog> 
    level INFO 
    <logfile> 
    path /path/to/plone4/var/log/client1.log 
    max-size 10mb 
    old-files 1 
    </logfile> 
</eventlog> 

plone.recipe.zope2instance現在可以生成這個。例如,您可以指定以下選項:

event-log-max-size = 10mb 
event-log-old-files = 3 
1

我一直在使用iw.rotatezlogs,因爲至少早期的Plone 3非常成功。我從你的鏈接中看到,我不再需要iw.rotatezlogs。

我不喜歡依靠logrotate,因爲它不能在我必須部署到的一臺Windows服務器上使用。

就我所知,pure-zope解決方案(我還沒有測試過)不做日誌文件壓縮(至少我在ZConfig/components/logger/handlers.xml中看不到它這是我認爲應該定義的地方),所以我懷疑我會留在iw.rotatezlogs中。

2

下面是我們做什麼,這很簡單,但工程:

在你的buildout添加此部分:

[logrotate] 
recipe = collective.recipe.template 
input = ${buildout:directory}/templates/logrotate.conf 
output = ${buildout:directory}/etc/logrotate.conf 

而且在templates/logrotate.conf

rotate 4 
weekly 
create 
compress 
delaycompress 
missingok 

${buildout:directory}/var/log/instance1.log ${buildout:directory}/var/log/instance1-Z2.log { 
    sharedscripts 
    postrotate 
     /bin/kill -USR2 $(cat ${buildout:directory}/var/instance1.pid) 
    endscript 
} 

${buildout:directory}/var/log/instance2.log ${buildout:directory}/var/log/instance2-Z2.log { 
    sharedscripts 
    postrotate 
     /bin/kill -USR2 $(cat ${buildout:directory}/var/instance2.pid) 
    endscript 
} 

添加任何你需要其他的日誌旋轉。然後是將/etc/logrotate.conf鏈接到生成的文件。

+0

再次,它是以Unix爲中心的 - 不會在Windows上工作。我不喜歡*在Windows上運行Plone/Zope,但有些客戶需要它。 – Auspex 2012-02-27 15:14:15

+0

你是絕對正確的,這隻適用於類Unix環境。再次,這個問題並沒有問什麼是最好的跨平臺的方式做logrotation,也沒有問什麼應該去plone手冊。它要求提供最佳實踐。在我的最佳實踐列表中,窗口未列出。我完全明白你爲什麼從你的觀點來看待它,不要誤會我的意思。無論如何,我將停止回覆我們最近開始的這個巨魔式的問題,這是對堆棧資源和我的能量的浪費。 – ggozad 2012-02-27 15:25:54

+0

將這稱爲「巨魔型問題」並不公平 - 這是一個非常好的問題,我很高興從它那裏瞭解到Zope現在已經內置了logrotation。 雖然我同意你在Windows上運行Zope幾乎不是最佳實踐,但我不能接受日誌輪換的最佳實踐涉及一種無法在Zope支持的所有平臺上工作的方法。 – Auspex 2012-02-28 15:55:49

6

ZConfig支持標準庫RotatingFileHandlerTimedRotatingFileHandler。以ZConfig測試爲例:

<eventlog> 
    <logfile> 
    path /path/to/file.log 
    level debug 
    when D 
    interval 3 
    old-files 11 
    </logfile> 
</eventlog> 

這將每隔三天滾動日誌,保留11箇舊文件。

您可以在實例配方中使用事件日誌自定義/訪問日誌自定義參數將這些配置片段放置在您的構建塊中。 plone.recipe.zope2instance

+0

這對我來說很好......和encolpe的博客帖子一樣 – sureshvv 2012-02-26 17:44:08

+0

有沒有什麼辦法可以獲得壓縮,就像iw.rotatezlogs那樣? – Auspex 2012-02-27 15:15:01

2

米克,你應該直接問我;)

我的博客文章還是不錯的,這仍然功能在Zope2無證。它可以與Plone 4和Plone 5一起使用。擴展iw.rotatelogs僅爲Plone 3設計。

使用logrotate並不好,因爲它在旋轉過程中不處理記錄的情況。它可以讓你的實例靜靜地崩潰並在RAM中寫入日誌,直到你重啓實例。