归档日志记录了 SQL 语句的操作,对于数据库审计、故障诊断和恢复至关重要。可以通过 SQL 命令查看归档日志。
Linux/Unix 下查看归档日志
在 Linux/Unix 系统中,可以使用 **grep** 命令过滤归档日志文件:
sql
grep "关键字" /var/log/postgresql/postgresql-*.log
例如,要查找所有包含 "INSERT" 的日志条目:
sql
grep "INSERT" /var/log/postgresql/postgresql-*.log
Windows 下查看归档日志
在 Windows 系统中,可以使用 **findstr** 命令过滤归档日志文件:
sql
findstr /s "关键字" "%ProgramFiles%\PostgreSQL\14\data\postgresql.log"
例如,要查找所有包含 "UPDATE" 的日志条目:
sql
findstr /s "UPDATE" "%ProgramFiles%\PostgreSQL\14\data\postgresql.log"
查看特定时间段的日志
可以通过修改时间戳来过滤日志条目。例如,要查看过去一小时的日志:
sql
grep -F --line-buffered 'log_time >= now() - interval '1 hour'' /var/log/postgresql/postgresql-*.log
要查看特定时间范围内的日志,可以使用 **-t** 选项:
sql
grep -F --line-buffered -t "[开始时间] [结束时间]" /var/log/postgresql/postgresql-*.log
查看特定数据库或用户的日志
可以通过添加 **--database** 或 **--username** 选项来过滤特定数据库或用户的日志条目。例如,要查看所有来自 "mydb" 数据库的日志:
sql
grep "mydb" /var/log/postgresql/postgresql-*.log --database
要查看所有来自 "postgres" 用户的日志:
sql
grep "postgres" /var/log/postgresql/postgresql-*.log --username