2010-02-16

iw.rotatezlogs

通常は、Zope/PloneはApacheと同様に KILL -HUPなどでログをローテートしないといけません。
Windows版のPlone2.1x を使っていたころは、WindowsのサービスをKill hup するような方法がわからなかったので、rotatezlogs というZope専用のプロダクトを利用していました。

現在は、ベースのOSをCentOSに切り替えているので、/etc/logrotate.d/ 以下に設定を追加すれば良いのですが、zopecrl logreopen がどうもうまく動いてくれません…。 (ただいま調査中)

どうしたら良いものかと思っていたところ、iw.rotatezlogs というPlone3対応のものが出ていたので、今回もその方法に頼ることにしました。


  • Package:  iw.rotatezlogs
  • easy_install で追加しています。(buildoutだと、依存関係で失敗した場合、設定ファイルが消えたり、全体に影響が出てしまうため)
    • easy_install iw.rotatezlogs で Pythonのsite_pakages に追加。
    • zope.conf に 設定追加。
    • 私の場合は、/var/log/zope に 1MBで6世代ローテートします。(このへんはオプションで設定できます)

    ※iw.rotatezlogsは、ログの指定はサイズ指定なので、Dailyでのローテートは出来ません。ですが、形式を指定したアーカイブオプションなどがあり、機能としては十分かなと思います。

    設定は以下のような感じになります。

    <eventlog>
    level INFO
    # zopeのデフォルト
    # <logfile>
    # path /var/log/zope/instance.log
    # level INFO
    # </logfile>

    <rotatelogfile>
    # Required parameters
    # -------------------
    path /var/log/zope/instance.log
    # 1MBごとに過去5世代まで
    max-bytes 1MB
    backup-count 5

    # Optional parameters
    # -------------------
    # compression zip
    # format ------\n%(asctime)s %(levelname)s %(name)s %(message)s
    </rotatelogfile>
    </eventlog>

    <logger access>
    level WARN
    # zopeのデフォルト
    # <logfile>
    # path /var/log/zope/instance-Z2.log
    # format %(message)s
    # </logfile>
    <rotatelogfile>
    # Required parameters
    # -------------------
    path /var/log/zope/instance-Z2.log
    # 1MBごとに過去5世代まで
    max-bytes 1MB
    backup-count 5

    # Optional parameters
    # -------------------
    # compression zip
    # format ------\n%(asctime)s %(levelname)s %(name)s %(message)s
    </rotatelogfile>
    </logger>


    ところで、ログのローテートの指定は、zope.conf上になるので、何も指定しないとbuildoutを実行した場合はzope.confが更新されてしまい、せっかく書いた設定も消えてしまいます。うっかりbuildoutしたのを忘れてしまい、Zopeを再起動させると、ログのローテートが無効になってしまうので、気がついたらログが数十MBになっていました。

    これは困ったな~と思っていたら、幸いにも buildoutで設定できるというBlogを発見!



    * How to add rotatezlogs in your buildout ( http://tarekziade.wordpress.com/2008/03/02/how-to-add-rotatezlogs-in-your-buildout/ )



    以下のような感じで、buildout.cfgに指定すれば、zope.confに書き出してくれます。



    [instance]

    ...

    event-log-custom =
    %import iw.rotatezlogs
    <rotatelogfile>
    path ${buildout:folder}/var/log/instance.log
    max-bytes 1MB
    backup-count 5
    </rotatelogfile>

    access-log-custom =
    %import iw.rotatezlogs
    <rotatelogfile>
    path ${buildout:folder}/var/log/instance-Z2.log
    max-bytes 1MB
    backup-count 5
    </rotatelogfile>



    ということで、これでだいぶ助かりました。

    buildout.cfgで、ずいぶんいろんな設定ができるものだと感心しきりです。まだまだ便利な使い方があるので、もっとうまく利用できるようにしたいなと思います。

    0 件のコメント:

    コメントを投稿