Java 如何使JDBC的查询显示在postgres日志中?

Java 如何使JDBC的查询显示在postgres日志中?,java,database,postgresql,spring-boot,jdbc,Java,Database,Postgresql,Spring Boot,Jdbc,我正在使用Postgres作为数据库的spring引导服务器上工作。我希望能够有一个来自服务器的查询日志文件。我已经找到了我的sql日志,可以看到我通过psql对数据库进行的查询,但是没有记录通过jdbc从服务器发出的查询。如何使这些查询显示在日志文件中?或者,如果它们只是被记录在其他地方,有人能告诉我正确的方向吗?您可以将log\u min\u duration\u statement设置为0来记录所有语句。但是要小心,因为这会大大增加日志的大小 在jdbc连接url中设置应用程序名称也很有帮

我正在使用Postgres作为数据库的spring引导服务器上工作。我希望能够有一个来自服务器的查询日志文件。我已经找到了我的sql日志,可以看到我通过psql对数据库进行的查询,但是没有记录通过jdbc从服务器发出的查询。如何使这些查询显示在日志文件中?或者,如果它们只是被记录在其他地方,有人能告诉我正确的方向吗?

您可以将log\u min\u duration\u statement设置为0来记录所有语句。但是要小心,因为这会大大增加日志的大小

在jdbc连接url中设置应用程序名称也很有帮助,这样可以更容易地选择适当的日志消息:

jdbc:postgresql://host:5432/DB?ApplicationName=YourApp

您可以将log_min_duration_语句设置为0以记录所有语句。但是要小心,因为这会大大增加日志的大小

在jdbc连接url中设置应用程序名称也很有帮助,这样可以更容易地选择适当的日志消息:

jdbc:postgresql://host:5432/DB?ApplicationName=YourApp

如果
log\u statement=all
来自您的postgresql.conf文件,但有时似乎无效,则该设置可能已在数据库或用户级别被覆盖。在发出“全部显示”之前,请确保与应用服务器连接的数据库和用户相同

它们可能会被以下内容之一所覆盖:

alter user <foo> set log_statements='none';
alter database <foo> set log_statements='none';

如果
log\u statement=all
来自您的postgresql.conf文件,但有时似乎无效,则该设置可能已在数据库或用户级别被覆盖。在发出“全部显示”之前,请确保与应用服务器连接的数据库和用户相同

它们可能会被以下内容之一所覆盖:

alter user <foo> set log_statements='none';
alter database <foo> set log_statements='none';

为了获取每个查询的日志,我使用选项
log\u statement=all
,该选项配置为命令行参数,用于postgres过程。我使用以下docker compose文件在开发环境中运行postgresql数据库

version: "3.8"

services:

  db-ct:
    container_name: 'my-container-name'
    image: 'postgres:13'
    environment:
      - POSTGRES_USER=database-username-created-on-container-creation
      - POSTGRES_PASSWORD=database-password-created-on-container-creation
      - POSTGRES_DB=database-name-created-on-container-creation
    ports:
      # The port is available by sql clients, like sqldeveloper
      - '5000:5432'
    volumes:
      - db:/var/lib/postgresql/data/
    restart: 'no'
    # Run postgres and log all queries
    command: [ "postgres", "-c", "log_statement=all" ]
    networks:
      internal:

volumes:
  # Database files
  # They are stored in a volume thus they are not reset after rebuilding the images
  db:
    name: your-volume-name

networks:
  internal:
第19行:命令行参数

需要4个替换项:
我的容器名称
创建容器时创建的数据库用户名
创建容器时创建的数据库密码
创建容器时创建的数据库名称
您的卷名


数据库将在端口5000上侦听。

为了获取每个查询的日志,我使用选项
log\u statement=all
,该选项配置为命令行参数,用于postgres进程。我使用以下docker compose文件在开发环境中运行postgresql数据库

version: "3.8"

services:

  db-ct:
    container_name: 'my-container-name'
    image: 'postgres:13'
    environment:
      - POSTGRES_USER=database-username-created-on-container-creation
      - POSTGRES_PASSWORD=database-password-created-on-container-creation
      - POSTGRES_DB=database-name-created-on-container-creation
    ports:
      # The port is available by sql clients, like sqldeveloper
      - '5000:5432'
    volumes:
      - db:/var/lib/postgresql/data/
    restart: 'no'
    # Run postgres and log all queries
    command: [ "postgres", "-c", "log_statement=all" ]
    networks:
      internal:

volumes:
  # Database files
  # They are stored in a volume thus they are not reset after rebuilding the images
  db:
    name: your-volume-name

networks:
  internal:
第19行:命令行参数

需要4个替换项:
我的容器名称
创建容器时创建的数据库用户名
创建容器时创建的数据库密码
创建容器时创建的数据库名称
您的卷名


数据库将在端口5000上侦听。

记录到Postgres日志中的查询不会因应用程序而有所区别——您是否可以使用
log\u min\u duration\u语句
log\u语句
的值更新您的日志(从
psql
中运行
SHOW ALL
)。请同时显示与
log.*
相关的其他参数。我添加了一张带有日志值的图片,为什么不在Spring Boot应用程序日志中记录SQL调用?比如:
logging.level.org.hibernate.SQL=DEBUG
我已经在做了。问题是,某个查询没有返回结果集,但当我将其从服务器日志复制粘贴到psql时,它会工作。我希望能够看到postgres发布的日志,以了解数据库方面的情况。记录到postgres日志中的查询不会因应用程序而有所不同——您能否在
显示所有
输出中使用
log\u min\u duration\u语句
log\u语句
的值更新您的帖子(从
psql
运行
SHOW ALL
)。请同时显示与
log.*
相关的其他参数。我添加了一个带有日志值的图片为什么不在Spring Boot应用程序日志中记录SQL调用?例如:
logging.level.org.hibernate.SQL=DEBUG
我已经在这样做了。问题是某个查询没有返回结果集,但在我从服务器日志到psql。我希望能够看到postgres正在发布的日志,以查看数据库端的情况。如果我使用postgres控制台从intellij运行
show all
,我可以看到日志级别设置为与我的postgresql.conf不同的级别。知道我在什么地方可以找到正在使用的配置吗jdbc连接?如果我使用postgres控制台从intellij运行
show all
,我可以看到日志级别设置为与postgresql.conf不同的值。知道jdbc连接时使用的配置在哪里吗?