postgresql日志配置


日志配置

# 啟動日志收集, 這是一個后台進程,抓取發送到stderr的日志消息,並會將他們重定向到日志文件。
logging_collector = on    

# 日志輸出路徑,可以是自定義絕對路徑或相對於數據目錄 PGDATA 的相對路徑
log_directory = 'log'

# 文件名,可以帶上格式字符串
# 保留一周,每天一個文件,當ROTATE時間周期到達后,重復使用同一個文件前truncate文件內容
log_filename = 'postgresql-%a.log'

# 什么時候觸發基於時間的rotate
log_rotation_age = 1d    

# 當生成新的文件時,文件名已存在,則覆蓋同名舊文件名
log_truncate_on_rotation  = on

# 如果文件達到100MB,切換到下一個文件(如果文件名與當前已有文件名同名,則APPEND,而不會truncate這個文件)      
# 所以以上配置,1天內文件大小可以超過100MB。     
log_rotation_size = 100MB    # 什么時候觸發基於文件大小的rotate。 

#設置日志記錄內容,log_statement:none, ddl, mod, and all 默認是 none 
# None表示不記錄,ddl記錄所有數據定義命令,比如CREATE,ALTER,和DROP語句,
# mod記錄所有ddl語句,加上數據修改語句INSERT,UPDATE等
# all記錄所有執行的語句,將此配置設置為all可跟蹤整個數據庫執行的SQL語句,但會對數據庫性能產生較大影響,生產環境不建議配置此值
log_statement = mod

# 以上設置完成之后,可以記錄到 update、drop 等,但是並不會記錄 select 語句,加上 log_min_duration_statement = 0 才可以記錄到select
log_min_duration_statement=0

完成以上設置后,7天后會有7個日志文件,分別為周一到周日,日志文件會不斷的覆蓋前一個星期
> log_truncate_on_rotation設置為on的情況下:
> log_rotation_age觸發,切文件,如果下一個log文件名的文件已經存在,會先執行文件truncate清數據。
> log_rotation_size觸發,切文件,如果下一個log文件名的文件已經存在,則append寫,不會執行文件truncate清數據。
> 所以rotate時,新的log文件名至關重要。
> 如果要配置保留7天,每天寫一個文件,其實也是在文件名上下功夫,例如配置為%aAud都是可以的。

博主只是寫了自己用到的配置,詳細的配置,請借鑒德哥的文章:
https://github.com/digoal/blog/blob/master/201907/20190720_02.md


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM