首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Docker postgresql日志更具体化?

如何让Docker postgresql日志更具体化?
EN

Stack Overflow用户
提问于 2021-11-28 10:46:23
回答 1查看 42关注 0票数 0

我正在使用官方的postgresql:13data镜像,并使用位于/var/lib/postgresql/ DockerHub的.SQL文件初始化一个数据库。虽然这样可以工作,但很难调试,因为docker/docker-compose非常模糊:

代码语言:javascript
复制
...
docker-postgresql-1  | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/hito.sql
docker-postgresql-1  | DROP SCHEMA
docker-postgresql-1  | CREATE SCHEMA
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | INSERT 0 3
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | INSERT 0 9
docker-postgresql-1  | CREATE TYPE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE TABLE
docker-postgresql-1  | CREATE FUNCTION
docker-postgresql-1  | CREATE TRIGGER
docker-postgresql-1  | CREATE TABLE
...

有没有办法让Postgres更具体地说明它在做什么?例如,它应该如下所示:

代码语言:javascript
复制
docker-postgresql-1  | DROP SCHEMA MYSCHEMA
docker-postgresql-1  | CREATE SCHEMA MYSCHEMA
docker-postgresql-1  | CREATE TABLE MYTABLE1
docker-postgresql-1  | INSERT 0 3 INTO TABLE MYTABLE1, 1 skipped because it already exists but not aborted due to  ON_CONFLICT_DO_NOTHING
docker-postgresql-1  | CREATE TABLE MYTABLE2
docker-postgresql-1  | INSERT 0 9 INTO TABLE MYTABLE2, ALL SUCCESSFULL
docker-postgresql-1  | CREATE TYPE MYTABLE
docker-postgresql-1  | CREATE TABLE MYTABLE3
docker-postgresql-1  | CREATE TABLE MYTABLE4

我可以使用echo语句模拟其中的一部分,但不是全部。有没有什么方法可以让Postgresql不那么神秘,给我更多关于数据库初始化到底发生了什么的细节?我的一些表是空的,默认情况下它提供给我的日志不足以查明发生了什么。然而,它也不应该给我几千行成功的SQL insert语句,只给我一个摘要和什么时候出错。

EN

回答 1

Stack Overflow用户

发布于 2021-11-28 12:36:43

您可能希望使用"log_statement=all"参数启动postgres实例。示例:

代码语言:javascript
复制
version: '3.9'

services:

    db:
      image: postgres:latest
      restart: always
      environment:
        POSTGRES_PASSWORD: example
      command: ["postgres", "-c", "log_statement=all"]  # override entrypoint command with log_statement argument
      ports:
        - 5432:5432
      volumes:
      - ./pgdata:/docker-entrypoint-initdb.d/

这将为日志提供更多的粒度:

代码语言:javascript
复制
postgres-db-1       | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
postgres-db-1       | 2021-11-28 12:34:50.704 UTC [63] LOG:  statement: CREATE USER myUser;
postgres-db-1       | CREATE ROLE
postgres-db-1       | 2021-11-28 12:34:50.705 UTC [63] LOG:  statement: CREATE DATABASE dev_db;
postgres-db-1       | CREATE DATABASE
postgres-db-1       | 2021-11-28 12:34:50.769 UTC [63] LOG:  statement: GRANT ALL PRIVILEGES ON DATABASE dev_db TO myUser;
postgres-db-1       | GRANT
postgres-db-1       | 2021-11-28 12:34:50.770 UTC [63] LOG:  statement: CREATE DATABASE myApp_test;
postgres-db-1       | CREATE DATABASE
postgres-db-1       | 2021-11-28 12:34:50.817 UTC [63] LOG:  statement: GRANT ALL PRIVILEGES ON DATABASE dev_db TO myUser;
postgres-db-1       | GRANT
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70142623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档