原本的 nginx 是不支援把 access log 寫到 pipe 的,對於應用 cronolog 來 rotate log 或是 scribe 來收集 log 之類的用途比較不方便。nginx 作者也說了不會增加這個功能。剛好中國大陸的淘寶將他們所使用並且修改過的 nginx 版本(稱作 Tengine)open source,於是整理了一下,只取出跟 pipe 有關的程式,patch 回原本的 nginx (1.0 stable branch) 上。

Patch 可以在 Github 下載。也可以直接把 這個 Branch clone 下來編譯。

使用方法大致如下:

access_log "pipe:/usr/local/bin/cronolog /data/logs/access-%Y-%m-%d.log" combined

如果 pipe 另一端死掉的話,log 會寫入預設的 log file,不會像 Apache 一樣重新開啟新的 pipe。如果使用比較不穩定的 logger,建議另外多設定一個 access_log 到檔案避免 log 遺失。

創作者介紹

PIXNET Lab

PIXNET Lab 發表在 痞客邦 PIXNET 留言(1) 人氣()

留言列表 (1)

發表留言
  • Davied
  • 如果pipe:/usr/local/bin/cronolog sometag 加了參數. 這樣的話, 會有worker process pid exited with code 0 錯誤. 而且永遠執行的都是data/logs/access-%Y-%m-%d.log.
  • 確實沒有測試到這個部分,我們會再確認看看。感謝您的回報。

    PIXNET Lab 於 2012/09/12 17:26 回覆

找更多相關文章與討論