Postgresql的日志配置教程詳解
背景
公司的項目中使用瞭postgresql(簡稱pg)作為其數據庫管理系統,前兩天環境突然崩潰瞭,頁面無法打開。經過排查,我發現是數據庫所在機器磁盤滿瞭,通過目錄和文件排序,原來是pg的日志太多(大約保留瞭大半年的日志在磁盤上沒有被清理)。
我看瞭下pg的日志配置,發現基本都是用的默認配置,日志滾動沒有開啟,於是乎做瞭下相關配置優化後對pg進行重啟,最後看瞭pg的日志滾動,恢復正常瞭。以下是我梳理的關於pg的日志配置項。
配置詳解
配置文件:postgresql.conf
配置1:日志開啟與關閉
默認為off,設置為on則pg可以記錄相關日志,建議打開,否則在數據庫出現異常時候,沒有日志來定位具體問題
# This is used when logging to stderr: logging_collector =on# Enable capturing of stderr and csvlog # into log files. Required to be on for # csvlogs. # (change requires restart)
配置2:日志滾動策略
# These are only used if logging_collector is on: #配置日志目錄,默認為pg_log即可 log_directory = 'pg_log' # directory where log files are written, # can be absolute or relative to PGDATA #pg日志文件名及其擴展名,默認即可 log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, # can include strftime() escapes #pg日志文件的權限,默認即可 log_file_mode = 0600 # creation mode for log files, #開啟日志滾動階段,這裡需要設置為on log_truncate_on_rotation =on# If on, an existing log file with the #日志保留天數,這裡看實際環境,如果是測試建議1d,如果是生產環境建議7d log_rotation_age = 1d # Automatic rotation of logfiles will #單個日志大小,默認100MB即可,比較標準的配置
配置3:日志打印時機
#發送給客戶端的消息級別,建議warning即可,日志等級越低,打印的內容越多,性能上越有損耗 client_min_messages = warning # values in order of decreasing detail: # debug5 # debug4 # debug3 # debug2 # debug1 # log # notice # warning # error #寫到數據庫日志文件中的消息的級別,建議warning即可,日志等級越低,打印的內容越多,性能上越有損耗 log_min_messages = warning # values in order of decreasing detail: # debug5 # debug4 # debug3 # debug2 # debug1 # info # notice # warning # error # log # fatal # panic #是否記錄導致數據庫出現錯誤的SQL語句,建議warning即可,日志等級越低,打印的內容越多,性能上越有損耗 log_min_error_statement = error # values in order of decreasing detail: # debug5 # debug4 # debug3 # debug2 # debug1 # info # notice # warning # error # log # fatal # panic (effectively off)
配置4:數據庫統計監控
#log_statement_stats為on則會開啟log_parser_stats,log_planner_stats,log_executor_stats這三個選項,生產環境不建議開啟,建議測試環境開啟,用於定位問題。 #log_parser_stats = off #log_planner_stats = off #log_executor_stats = off #log_statement_stats = off
配置5:慢sql記錄配置
#執行sql時間為2s以上的sql都會被記錄下來 log_min_duration_statement = 2s
以上配置再修改完之後,均需要重啟pg生效。
到此這篇關於Postgresql的日志配置的文章就介紹到這瞭,更多相關Postgresql日志配置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 解決PostgreSQL日志信息占用磁盤過大的問題
- 本地計算機上的 postgresql 服務啟動後停止的問題解決
- Python logging簡介詳解
- python打印日志方法的使用教程(logging模塊)
- python自動化測試通過日志3分鐘定位bug