用Plone记录旋转

时间:2012-02-24 06:44:05

标签: plone zope

Plone产品安装的日志轮换将是一个很好的功能。有关将日志轮换集成到Plone中的最新实践是什么?

我发现了这篇文章:http://encolpe.wordpress.com/2010/06/17/how-to-get-log-files-rotate-in-zope-with-buildout/但由于plone.org上没有文档,我想ping社区,了解最佳做法,不要填写硬盘。

5 个答案:

答案 0 :(得分:6)

ZConfig支持标准库RotatingFileHandlerTimedRotatingFileHandler。以ZConfig测试为例:

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

这将每三天滚动一次日志,保留11个旧文件。

您可以使用实例配方中的event-log-custom / access-log-custom参数将这些配置片段放置在您的buildout中。 plone.recipe.zope2instance

答案 1 :(得分: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

答案 2 :(得分: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链接到生成的文件。

答案 3 :(得分:2)

Mikko,你应该直接问我;)

我的博客文章仍然很好,这个功能在Zope2中仍然没有记录。它可以与Plone 4和Plone 5一起使用。扩展名iw.rotatelogs仅为Plone 3设计。

使用logrotate并不正常,因为它在循环期间不处理日志写入的情况。它可以使您的实例静默崩溃并将日志写入RAM,直到您重新启动实例。

答案 4 :(得分:1)

我一直在使用iw.rotatezlogs因为至少早期的Plone 3非常成功。我从你的链接中看到我不再需要iw.rotatezlogs了。

我不喜欢依赖logrotate,因为它不能在我必须部署到的一台Windows服务器上使用。

尽我所知,纯zope解决方案(我还没有测试过)不进行日志文件压缩(至少我在ZConfig / components / logger / handlers.xml中看不到它是我认为应该定义的地方),所以我怀疑我会留在iw.rotatezlogs。