java - 如何使 JDBC 进行的查询显示在 postgres 日志中?
问题描述
我正在使用 Postgres 作为数据库的 Spring Boot 服务器。我希望能够拥有来自服务器的查询的日志文件。我找到了我的 sql 日志,我可以看到我通过 psql 对数据库进行的查询,但是没有记录来自我的服务器通过 jdbc 的查询。如何让这些查询显示在我的日志文件中?或者,如果他们只是被记录在其他地方,有人能指出我正确的方向吗?
解决方案
如果log_statement=all
来自您的 postgresql.conf 文件,但有时似乎无效,则该设置可能已在数据库或用户级别被覆盖。在发出“SHOW ALL”之前,请确保您连接到同一个数据库,并且与您的应用服务器连接的用户相同。
它们可能已被以下其中之一覆盖:
alter user <foo> set log_statements='none';
alter database <foo> set log_statements='none';
但是,为了确保用户不能对超级用户隐藏他们的活动,只有超级用户可以发出上述之一。如果您的应用程序以超级用户身份登录(不是一个好主意),那么它可能会在会话级别关闭日志记录,从而覆盖 conf 文件。
如果是上述更改设置的命令之一,您可以在 psql 中使用 \drds 来查看它,或者在 SQL 中使用:
SELECT rolname AS "Role", datname AS "Database",
pg_catalog.array_to_string(setconfig, E'\n') AS "Settings"
FROM pg_catalog.pg_db_role_setting s
LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase
LEFT JOIN pg_catalog.pg_roles r ON r.oid = setrole
ORDER BY 1, 2;
推荐阅读
- javascript - 类中的vue3反应性
- javascript - 在自定义反应组件中获取道具值建议
- clojure - Clojure Gloss - 来自 MQTT 协议规范的可变字节整数的编解码器
- python - 围绕 cx_Oracle 库实现 python 代码的问题
- r - 如何调整预测的对数函数,使其更接近我的数据点?
- c++ - glm 视图矩阵围绕屏幕中心旋转
- reactjs - 有没有办法在主域和子域上都有一个反应应用程序?
- google-sheets - 谷歌表格:公式的工作方式与平时不同
- javascript - ChartJS - 在散点图上显示数据值
- java - Thymeleaf th:text 在某些情况下不起作用