您的位置:

详解PostgreSQL日志

一、PostgreSQL日志级别配置

PostgreSQL将日志分为11个级别,从低到高依次为:DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、LOG、INFO、NOTICE、WARNING、ERROR和FATAL。通过设置日志级别,您可以仅记录提交错误或记录所有SQL查询。以下是一个设置日志级别为WARNING的示例:

# 修改postgresql.conf文件
log_min_messages = WARNING

以上示例表示仅记录级别高于WARNING的日志。更改它,然后重新启动PostgreSQL以使更改生效。

二、PostgreSQL日志配置

要开始记录PostgreSQL日志,您需要在配置文件中指定记录的方式,并指定应记录哪些信息。

以下是一个基本的日志记录示例:

# 修改postgresql.conf文件
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 10MB

以上示例表示将日志记录在stderr文件中,并启用了日志收集器,日志将记录到pg_log目录中的postgresql-日期_时间.log文件中。此外,日志旋转每天进行一次,或者当日志文件大小达到10MB时,进行一次日志旋转。

三、PostgreSQL日志保留

默认情况下,PostgreSQL会定期删除旧日志。如果您需要更长时间保存日志,请使用以下配置:

# 修改postgresql.conf文件
log_rotation_age = 7d           # 保留七天的日志
log_rotation_size = 0           # 禁用按大小分割的日志

以上示例表示每七天进行一次日志旋转,禁用按大小分割的日志。

四、PostgreSQL时间

默认情况下,PostgreSQL在日志条目中显示本地时间。如果您需要使用UTC时间,请将log_timezone配置为UTC。

# 修改postgresql.conf文件
log_timezone = 'UTC'

五、PostgreSQL创建无日志表

在特定情况下,您可能希望创建一个不产生任何日志记录的表。为此,您可以将log_statement配置为none。

# 修改postgresql.conf文件
log_statement = 'none'

六、PostgreSQL源码

所有PostgreSQL的源代码都可在官网上的下载。以下是一个基本编译和安装示例:

# 下载源码
curl -O https://ftp.postgresql.org/pub/source/v13.2/postgresql-13.2.tar.gz

# 解压源码
tar xf postgresql-13.2.tar.gz
cd postgresql-13.2

# 编译
./configure
make
sudo make install

七、PostgreSQL的in查询

在PostgreSQL中,您可以使用in运算符来执行多个值的查询。以下是一个示例:

SELECT * FROM table WHERE column IN (value1, value2, value3);

八、PostgreSQL版本

要查看安装的PostgreSQL版本,请使用以下命令:

psql -c "SELECT version();"

九、PostgreSQL官网

要了解有关PostgreSQL的更多信息,请访问官网:https://www.postgresql.org/

十、PostgreSQL的临时表选取

在PostgreSQL中,您可以使用WITH语法创建临时表,并在后续查询中使用它。以下是一个示例:

WITH temp_table AS (
    SELECT column1, column2 FROM table1
    WHERE ...
), 
SELECT * FROM temp_table
JOIN table2 ON temp_table.column1 = table2.column1;