| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 21. 日常數據庫維護工作 | Fast Forward | Next |
把數據庫服務器的日志輸出保存在一個地方是個好主意, 而不是僅僅把它們放到 /dev/null 裡。 在碰到危險的問題的時候,日志輸出是非常寶貴的。 不過,日志輸出可能很龐大(特別是在比較高的調試級別上), 而且你不會無休止地保存它們.你需要"旋轉"日志文件, 這樣生成新的日志文件並且經常拋棄老的.
如果你簡單地把postmaster的stderr定向到一個文件中, 那麼截斷日志文件的唯一的方法是停止並重起postmaster。 這樣做對于開發環境可能是可以的,但是你肯定不想在生產環境上這麼幹。
最簡單的生產級的管理日志輸出的方法就是把它們發送給 syslog,讓 syslog 處理文件旋轉。 要利用這個工具,確保 PostgreSQL 制作的時候打開了 --enable-syslog 選項並且把 postgresql.conf 裡的 syslog 配置參數設置為 2(只記錄 syslog 日志)。 然後在你想強迫 syslog 守護進程開始寫入一個新日志文件的時候, 你就可以發送一個 SIGHUP 信號給它。 如果你想自動旋轉日志文件,那麼我們可以配置 logrotate 程序處理 syslog 的日志文件。
不過,在很多系統上,syslog 不是非常可靠,特別是在大型日志信息的情況下; 它可能在你最需要那些信息的時候截斷或者丟棄它們。 你可能會覺得把 postmaster 的stderr 輸出給某些日志旋轉腳本會更有用些。如果你用 pg_ctl 啟動服務器, 那麼postmaster的stderr已經重定向到stdout, 因此你只需要一個管道命令:
pg_ctl start | logrotate
PostgreSQL 版本並未包含合適的日志旋轉程序, 但是在網上有許多不錯的,比如 Apache 就帶著一個.