⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
日志记录

DuckDB 包含一种日志记录机制,用于向用户提供额外信息,例如查询执行详情、性能指标和系统事件。

基础知识

DuckDB 的日志记录机制可以使用 pragmas(实用指令)启用或禁用。默认情况下,日志存储在一个名为 duckdb_logs 的特殊表中,可以像查询其他表一样查询它。

示例

PRAGMA enable_logging;
-- Run some queries..
SELECT * FROM duckdb_logs;

日志级别

DuckDB 支持不同的日志级别来控制日志的详细程度

  • ERROR: 仅记录错误消息
  • WARNING: 记录警告和错误
  • INFO: 记录一般信息、警告和错误(默认)
  • DEBUG: 记录详细的调试信息
  • TRACE: 记录非常详细的跟踪信息

日志级别可以使用以下方式设置

PRAGMA enable_logging;
SET logging_level = 'TRACE';

日志类型

在 DuckDB 中,日志消息可以关联一个日志类型。日志类型有两个主要目标。首先,它们允许使用包含列表(includelists)和排除列表(excludelist)来限制记录哪些类型的日志消息。其次,日志类型可以有一个预定的消息模式,这允许 DuckDB 自动将消息解析回结构化数据类型。

特定于日志的类型

只记录特定类型的消息

PRAGMA enable_logging('HTTP');

上述实用指令将自动设置正确的日志级别,并将 HTTP 类型添加到 enabled_log_types 设置中。

结构化日志记录

某些日志类型(如 HTTP)将具有关联的消息模式。为了让 DuckDB 自动解析消息,请使用 duckdb_logs_parsed() 宏。例如

SELECT request.headers FROM duckdb_logs_parsed('HTTP');

可用日志类型列表

这是 DuckDB 中可用日志类型的一个(非详尽)列表。

日志类型 描述 结构化
QueryLog(查询日志) 记录在 DuckDB 中执行的查询
FileSystem(文件系统) 记录所有与 DuckDB 文件系统的文件系统交互
HTTP 记录 DuckDB 内部 HTTP 客户端的所有 HTTP 流量

日志存储

默认情况下,DuckDB 将日志记录到内存日志存储中。另外,DuckDB 可以直接使用以下方式将日志记录到 stdout

PRAGMA enable_logging;
SET logging_storage = 'stdout';

本节页面