log_destination (string)
TeleDB支持多種方法來記錄服務器消息,包括stderr、csvlog和syslog。在 Windows 上還支持eventlog。設置這個參數為一個由想要的日志目的地的列表,之間用逗號分隔。默認值是只記錄到stderr。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。如果csvlog被包括在log_destination中,日志項會以“逗號分隔值” (CSV)格式被輸出,這樣可以很方便地把日志載入到程序中。要產生 CSV 格式的日志輸出,必須啟用logging_collector。當包含stderr或csvlog時, 會創建文件current_logfiles,以記錄日志收集器和相關記錄目的當前正在使用的日志文件的位置。這提供了一種便捷的方式來查找當前實例正在使用的日志。 這里是這個文件內容的一個例子:stderr log/postgresql.log csvlog log/postgresql.csv當一個新的日志文件被創建為一個循環的效果,并且當log_destination 被重新加載時,current_logfiles被重新創建。 當stderr和csvlog 都不包含在log_destination中,并且日志記錄收集器被禁用時, 它將被刪除。注意在大多數 Unix 系統上,你將需要修改系統的syslog守護進程的配置來使用log_destination的syslog選項。TeleDB可以在syslog設備LOCAL0到LOCAL7中記錄(見syslog_facility),但是大部分平臺上的默認syslog配置會丟棄所有這種消息。你將需要增加這樣的內容:local0.* /var/log/postgresql到syslog守護進程的配置文件來讓它工作。在 Windows 上,當你使用log_destination的eventlog選項時,你應該在操作系統中注冊一個事件源及其庫,這樣 Windows 事件查看器能夠清楚地顯示事件日志消息。
logging_collector (boolean)
這個參數啟用日志收集器,它是一個捕捉被發送到stderr的日志消息的后臺進程,并且它會將這些消息重定向到日志文件中。這種方法比記錄到syslog通常更有用,因為某些類型的消息不會在syslog輸出中出現(一個常見的例子是動態鏈接器錯誤消息;另一個例子是由archive_command等腳本產生的錯誤消息)。這個參數只能在服務器啟動時設置。注意也可以不使用日志收集器而把日志記錄到stderr,日志消息將只會去到服務器的stderr被定向到的位置。不過,那種方法只適合于低日志量,因為它沒有提供方法來輪轉日志文件。還有,在某些不使用日志收集器的平臺上可能會導致丟失或者混淆日志輸出,因為多個進程并發寫入同一個日志文件時會覆蓋彼此的輸出。注意日志收集器被設計成從來不會丟失消息。這意味著在極高的負載下,如果服務器進程試圖在收集器已經落后時發送更多的日志消息,那么它會被阻塞。相反,syslog傾向于在無法寫入消息時丟掉消息,這意味著在這樣的情況下它可能會無法記錄某些消息,但是它不會阻塞系統的其他部分。
log_directory (string)
當logging_collector被啟用時,這個參數決定日志文件將被在哪個目錄下創建。它可以被指定為一個絕對路徑,也可以被指定為一個相對于集簇數據目錄的相對路徑。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。默認是log。
log_filename (string)
當logging_collector被啟用時,這個參數設置被創建的日志文件的文件名。該值被視為一種strftime模式,因此%轉義可以被用來指定根據時間變化的文件名(注意如果有任何時區獨立的%轉義,計算將在由log_timezone指定的時區中完成)。被支持的%轉義和開放組織的strftime說明中列舉的類似。 注意系統的strftime不會被直接使用,因此平臺相關(非標準)的擴展無法工作。 默認是postgresql-%Y-%m-%d_%H%M%S.log。如果你不使用轉義來指定一個文件名,你應該計劃使用一個日志輪轉工具來避免最終填滿整個磁盤。在 8.4 發行之前,如果不存在%轉義,TeleDB將追加新日志文件創建時間的紀元,但是現在已經不再這樣做了。如果在log_destination中啟用了 CSV 格式輸出,.csv將會被追加到時間戳日志文件名中來創建 CSV 格式輸出(如果log_filename以.log結尾,該后綴會被替換)。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
log_file_mode (integer)
在Unix 系統上,當logging_collector被啟用時,這個參數設置日志文件的權限(在微軟 Windows 上這個參數將被忽略)。這個參數值應當是一個數字形式的模式,它可以被chmod和umask系統調用接受(要使用通常的十進制格式,該數字必須以一個0(零)開始)。默認的權限是0600,表示只有服務器擁有者才能讀取或寫入日志文件。其他常用的設置是0640,它允許擁有者的組成員讀取文件。不過要注意你需要修改log_directory為將文件存儲在集簇數據目錄之外的某個位置,才能利用這個設置。在任何情況下,讓日志文件變成任何人都可讀是不明智的,因為日志文件中可能包含敏感數據。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
log_rotation_age (integer)
當logging_collector被啟用時,這個參數決定一個個體日志文件的最長生命期。當這些分鐘過去后,一個新的日志文件將被創建。將這個參數設置為零將禁用基于時間的新日志文件創建。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
log_rotation_size (integer)
當logging_collector被啟用時,這個參數決定一個個體日志文件的最大尺寸。當這么多千字節被發送到一個日志文件后,將創建一個新的日志文件。將這個參數設置為零將禁用基于尺寸的新日志文件創建。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
log_truncate_on_rotation (boolean)
當logging_collector被啟用時,這個參數將導致TeleDB截斷(覆蓋而不是追加)任何已有的同名日志文件。不過,截斷只在一個新文件由于基于時間的輪轉被打開時發生,在服務器啟動或基于尺寸的輪轉時不會發生。如果被關閉,在所有情況下以前存在的文件將被追加。例如,使用這個設置和一個類似postgresql-%H.log的log_filename將導致產生 24 個每小時的日志文件,并且循環地覆蓋它們。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。例子:要保留 7 天的日志,每天的一個日志文件被命令為server_log.Mon、server_log.Tue等等,并且自動用本周的日志覆蓋上一周的日志。可以這樣做:將log_filename設置為server_log.%a、將log_truncate_on_rotation設置為on并且將log_rotation_age設置為1440。例子:要保留 24 小時的日志,每個小時一個日志文件,但是在日志文件尺寸超過 1GB 時輪轉。可以這樣做:將log_filename設置為server_log.%H%M、 將log_truncate_on_rotation設置為on、將log_rotation_age設置為60并且 將log_rotation_size設置為1000000。 在log_filename中包括%M允許發生任何尺寸驅動的輪轉來選擇一個不同于每個小時的初始文件名的新文件名。
syslog_facility (enum)
當啟用了向syslog記錄時,這個參數決定要使用的syslog“設備”。你可以在LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、 LOCAL5、LOCAL6、LOCAL7中選擇,默認值是LOCAL0。還請參閱系統的syslog守護進程的文檔。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
syslog_ident (string)
當啟用了向syslog記錄時,這個參數決定用來標識syslog中的TeleDB消息的程序名。默認值是postgres。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
syslog_sequence_numbers (boolean)
當日志被記錄到syslog并且這個設置為 on (默認)時,每一個消息會被加上一個增長的序號作為前綴(例如 [2])。這種行為避開了很多 syslog 實現默認采用的 “--- 上一個消息重復 N 次 ---”形式。在現代 syslog 實現中, 抑制重復消息是可以配置的(例如rsyslog 中的$RepeatedMsgReduction),因此這個參數可能不是必需的。 此外,如果你真的想抑制重復消息,你可以把這個參數設置為 off。這個參數只能在postgresql.conf文件或者服務器命令行上設置。
syslog_split_messages (boolean)
當啟用把日志記錄到syslog時,這個參數決定消息如何送達 syslog。當設置為 on(默認)時,消息會被分成行, 并且長的行也會被劃分以便能夠放到 1024 字節中, 這是傳統 syslog 實現一種典型的尺寸限制。當設置為 off 時,TeleDB服務器日志消息會被原樣送達 syslog 服務, 而處理可能的大體量消息的任務由 syslog 服務負責。如果 syslog 最終被記錄到一個文本文件中,那么兩種設置的效果是一樣的, 但最好設置為 on,因為大部分 syslog 實現要么不能處理大型消息, 要么需要做特殊的配置以處理大型消息。但是如果 syslog 最終寫入到某種其他媒介,有必要讓消息保持邏輯上的整體性(也更加有用)。這個參數只能在postgresql.conf文件或者服務器命令行上設置。
event_source (string)
當啟用了向事件日志記錄時,這個參數決定用來標識日志中數據庫消息的程序名。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。