外观
GaussDB 日志配置
日志配置参数
日志格式配置
log_destination
- 日志输出目标
- 可选值:stderr, csvlog, syslog, eventlog
- 可以同时指定多个目标,用逗号分隔
log_destination = 'stderr,csvlog'logging_collector
- 是否启用日志收集器
- 建议设置为 on
- 启用后日志会写入文件
logging_collector = onlog_directory
- 日志文件存储目录
- 可以使用绝对路径或相对路径
- 相对路径相对于数据目录
log_directory = 'pg_log'日志轮转配置
log_filename
- 日志文件名格式
- 支持时间变量,如 %Y-%m-%d_%H%M%S
- 影响日志文件的命名规则
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'log_rotation_age
- 日志文件的最大保留时间
- 超过该时间后自动创建新日志文件
- 默认值为 1d(1天)
log_rotation_age = 1dlog_rotation_size
- 单个日志文件的最大大小
- 超过该大小后自动创建新日志文件
- 默认值为 10MB
log_rotation_size = 10MBlog_truncate_on_rotation
- 当日志文件名已存在时是否截断
- 建议设置为 off
- 设置为 on 时会覆盖同名日志文件
log_truncate_on_rotation = off日志级别配置
log_min_messages
- 控制日志消息的级别
- 可选值:debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic
- 默认值为 warning
log_min_messages = warninglog_min_error_statement
- 控制记录错误语句的级别
- 可选值:debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic
- 默认值为 error
log_min_error_statement = errorlog_min_duration_statement
- 记录执行时间超过指定值的语句
- 单位为毫秒
- 设置为 0 时记录所有语句
- 设置为 -1 时禁用
# 记录执行时间超过 1000 毫秒的语句
log_min_duration_statement = 1000日志内容配置
连接日志
log_connections
- 是否记录客户端连接信息
- 建议设置为 on
- 帮助跟踪连接来源和频率
log_connections = onlog_disconnections
- 是否记录客户端断开连接信息
- 建议设置为 on
- 帮助分析连接持续时间
log_disconnections = onSQL 语句日志
log_statement
- 控制记录的 SQL 语句类型
- 可选值:none, ddl, mod, all
- none:不记录任何语句
- ddl:记录数据定义语句
- mod:记录数据修改语句
- all:记录所有语句
log_statement = 'ddl'log_duration
- 是否记录语句执行时间
- 建议设置为 off,使用 log_min_duration_statement 替代
- 会产生大量日志,影响性能
log_duration = off错误日志
log_error_verbosity
- 错误日志的详细程度
- 可选值:TERSE, DEFAULT, VERBOSE
- VERBOSE 包含最详细的错误信息
log_error_verbosity = DEFAULTlog_line_prefix
- 日志行前缀格式
- 支持多种转义序列
- 建议包含时间、用户、数据库等信息
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '审计日志配置
审计日志启用
# 启用审计日志
audit_enabled = on
# 审计日志目录
audit_directory = 'pg_audit'
# 审计日志文件名格式
audit_filename = 'audit-%Y-%m-%d_%H%M%S.log'审计日志级别
# 审计日志级别
audit_level = 1
# 审计日志轮转大小
audit_rotation_size = 10MB
# 审计日志轮转时间
audit_rotation_age = 1d审计内容配置
# 审计 DDL 操作
audit_ddl_level = 1
# 审计 DML 操作
audit_dml_state = 1
# 审计 SELECT 操作
audit_select_state = 0
# 审计 COPY 操作
audit_copy_state = 1日志管理最佳实践
日志存储管理
- 将日志存储在独立的磁盘分区
- 定期备份日志文件
- 实现日志的异地存储
- 配置合理的日志保留策略
日志轮转策略
- 根据磁盘空间和业务需求配置轮转大小和时间
- 建议将日志文件大小控制在 10-100MB 之间
- 保留足够的历史日志用于故障排查
- 定期清理过期日志
日志监控与告警
- 配置日志监控工具,如 ELK Stack
- 设置关键日志的告警规则
- 定期分析日志内容,发现潜在问题
- 建立日志分析和报告机制
常见问题(FAQ)
Q1: 如何配置慢查询日志?
A1: 配置慢查询日志的方法:
# 记录执行时间超过 1000 毫秒的语句
log_min_duration_statement = 1000
# 记录语句详情
log_statement = 'all'
# 确保日志收集器已启用
logging_collector = onQ2: 日志文件过大怎么办?
A2: 可以通过以下方法控制日志文件大小:
- 减小 log_rotation_size 参数
- 缩短 log_rotation_age 参数
- 提高 log_min_messages 级别,减少日志量
- 调整 log_statement 参数,减少记录的语句类型
Q3: 如何查看当前日志配置?
A3: 使用以下方法查看日志配置:
sql
-- 查看所有日志相关参数
SELECT name, setting, unit, short_desc FROM pg_settings WHERE category LIKE '%Log%';
-- 查看特定日志参数
SHOW log_directory;
SHOW log_filename;Q4: 如何实时查看日志?
A4: 可以使用以下方法实时查看日志:
bash
# 实时查看最新日志
tail -f $GAUSSDATA/pg_log/postgresql-$(date +%Y-%m-%d)_*.log
# 使用 gs_log 工具查看日志
gs_log -D $GAUSSDATA -fQ5: 如何配置日志的归档?
A5: 配置日志归档的方法:
# 启用归档
archive_mode = on
# 归档命令
archive_command = 'cp %p /archive/path/%f'
# 归档超时时间
archive_timeout = 60Q6: 日志配置修改后如何生效?
A6: 日志配置修改后,部分参数需要重启数据库才能生效,部分参数可以通过以下命令重载:
bash
# 重载配置文件
gs_ctl reload -D $GAUSSDATA或者使用 SQL 命令:
sql
SELECT pg_reload_conf();