跳到主要内容

概要

引入新的配置,使 Databend 的日志记录更加用户友好,并为未来的改进创造更多空间。

动机

Databend 的日志记录过于冗长。

每条日志都会同时写入文件和控制台。用户无法控制日志记录行为。

例如:

  • 用户无法为标准错误或文件指定 JSON / TEXT 格式。
  • 用户无法禁用文件日志记录。

更糟糕的是,我们无法向用户留下有意义的信息。我们的用户会被大量的日志淹没。我们应该使用 stdout 与用户沟通。

指南级解释

通过此 RFC,用户将拥有新的配置选项:

[log.file]
on = true
level = "debug"
dir = "./databend/logs"
format = "json"

[log.stderr]
on = true
level = "debug"
format = "text"
  • 用户可以禁用任何输出。
  • 用户可以控制日志级别和格式。

默认情况下,我们将仅启用 file 日志。启动 databend-query 将不再将记录打印到 stderr。我们将改为将以下消息打印到 stdout

Databend Server starting at xxxxxxx (took x.xs)

Information

version: v0.7.128-xxxxx
logs:
file: enabled dir=./databend/logs level=DEBUG
stderr: disabled (set LOG_STDERR_ON=true to enable)
storage: s3://endpoint=127.0.0.1:1090,bucket=test,root=/path/to/data
metasrv: embed

Connection

MySQL: mysql://root@localhost:3307/xxxx
clickhouse: clickhouse://root@localhost:9000/xxxx
clickhouse (HTTP): http://root:@localhost:9001

Useful Links

Documentation: https://docs.databend.com
Looking for help: https://github.com/datafuselabs/databend/discussions

要启用 stderr 日志,我们可以设置 LOG_STDERR_ON=trueRUST_LOG=info

参考级解释

在内部,我们将在 Config 中添加新的配置结构。旧的配置将保持兼容。

缺点

理由和替代方案

Minio

Minio 不会将日志打印到 stdoutstderr。相反,他们只打印欢迎消息:

:) minio server . --address ":9900"
MinIO Object Storage Server
Copyright: 2015-0000 MinIO, Inc.
License: GNU AGPLv3 [https://www.gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html)
Version: RELEASE.2022-06-30T20-58-09Z (go1.18.3 Linux/amd64)

API: http://192.168.1.104:9900 http://172.16.195.1:9900 http://192.168.97.1:9900 http://127.0.0.1:9900
root user: minioadmin
RootPass: minioadmin

WARNING: Console endpoint is listening on a dynamic port (34219), please use --console-address ":PORT" to choose a static port.
Console: http://192.168.1.104:34219 http://172.16.195.1:34219 http://192.168.97.1:34219 http://127.0.0.1:34219
root user: minioadmin
RootPass: minioadmin

Command-line: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc alias set myminio http://192.168.1.104:9900 minioadmin minioadmin

Documentation: https://docs.min.io

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ You are running an older version of MinIO released 2 weeks ago ┃
┃ Update: Run `mc admin update` ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

CockroachDB

CockroachDB 默认情况下不会将日志打印到 stderr

他们允许用户使用 --log=<yaml-config> 指定日志记录行为。

:) ./cockroach start-single-node
CockroachDB node starting at 2022-07-21 06:56:04.36859988 +0000 UTC (took 0.7s)
build: CCL v22.1.4 @ 2022/07/19 17:09:48 (go1.17.11)
WebUI: http://xuanwo-work:8080
sql: postgresql://root@xuanwo-work:26257/defaultdb?sslmode=disable
sql (JDBC): JDBC:postgresql://xuanwo-work:26257/defaultdb?sslmode=disable&user=root
RPC client flags: ./cockroach <client cmd> --host=xuanwo-work:26257 --insecure
logs: /tmp/cockroach-v22.1.4.linux-amd64/cockroach-data/logs
temp dir: /tmp/cockroach-v22.1.4.linux-amd64/cockroach-data/cockroach-temp3237741659
external I/O path: /tmp/cockroach-v22.1.4.linux-amd64/cockroach-data/extern
store[0]: path=/tmp/cockroach-v22.1.4.linux-amd64/cockroach-data
storage engine: pebble
clusterID: e1ab003d-7eba-48cd-b635-7a51f40269c2
status: restarted preexisting node
nodeID: 1

先例

未解决的问题

未来的可能性

添加 HTTP 日志支持

允许将日志发送到 HTTP 端点。

支持从 stdin 读取 SQL

基于此 RFC,我们可以实现从 stdin 读取 SQL。

开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册