使用CSV格式写日志
前提条件
- log_destination的值设置为csvlog。
- logging_collector的值设置为on。
csvlog定义
以“逗号分隔值” 即CSV(Comma Separated Value)的形式发出日志。
以下是简单的用来存储CSV形式日志输出的表定义:
CREATE TABLE postgres_log
(
log_time timestamp(3) with time zone,
node_name text,
user_name text,
database_name text,
process_id bigint,
connection_from text,
"session_id" text,
session_line_num bigint,
command_tag text,
session_start_time timestamp with time zone,
virtual_transaction_id text,
transaction_id bigint,
query_id bigint,
module text,
error_severity text,
sql_state_code text,
message text,
detail text,
hint text,
internal_query text,
internal_query_pos integer,
context text,
query text,
query_pos integer,
location text,
application_name text
);
详细说明请参见表1。
表 1 csvlog字段含义表
在openGauss源代码中错误的位置(如果log_error_verbosity的值设为verbose ) | |||
使用COPY FROM命令将日志文件导入这个表:
COPY postgres_log FROM '/opt/data/pg_log/logfile.csv' WITH csv;
说明:
此处的日志名“logfile.csv”要换成实际生成的日志的名称。
简化输入
简化输入到CSV日志文件,可以通过如下操作:
- 设置log_filename和log_rotation_age,为日志文件提供一个一致的、可预测的命名方案。通过日志文件名,预测一个独立的日志文件完成并进入准备导入状态的时间。
- 将log_rotation_size设为0来终止基于尺寸的日志回滚,因为基于尺寸的日志回滚让预测日志文件名变得非常的困难。
- 将log_truncate_on_rotation设为on以便区分在同一日志文件中旧的日志数据和新的日志数据。