我想对pgAdmin-4(版本3.0)进行审核,有关哪个用户运行哪个查询。我已经将pgAdmin的配置设置为显示所需的日志,但是它不显示当前连接的pgAdmin用户或当前的数据库用户。它仅显示记录器名称pgadmin。日志示例:
2019-04-15 11:38:56,769: SQL pgadmin: Execute (async) for server #8 - CONN:2363996 (Query-id: 780067):
select * from my_table limit 5;
2019-04-15 11:38:57,135: SQL pgadmin: Polling result for (Query-id: 780067)
2019-04-15 11:38:57,136: SQL pgadmin: Execute (dict) for server #8 - DB:mydb_development (Query-id: 5477805):
这是我尝试过的pgAdmin的配置(config_local.py):
DEBUG = False
CONSOLE_LOG_LEVEL = 30
FILE_LOG_LEVEL = 25
CONSOLE_LOG_FORMAT = '%(asctime)s: %(levelname)s\t%(name)s:\t%(message)s'
FILE_LOG_FORMAT = '%(asctime)s: %(levelname)s\t%(name)s:\t%(message)s'
LOG_FILE = '/var/log/pgadmin/pgadmin4.log'
我想要的是能够打印当前使用的pgAdmin用户,或者如果不能执行此操作,则仅打印当前的数据库用户。
示例:
2019-04-15 11:38:56,769: SQL my_pgadmin_user: Execute (async) for server #8 - CONN:2363996 (Query-id: 780067):
select * from my_table limit 5;
或
2019-04-15 11:38:56,769: SQL my_postgres_user: Execute (async) for server #8 - CONN:2363996 (Query-id: 780067):
select * from my_table limit 5;
感谢您的帮助。谢谢
答案 0 :(得分:0)
我最终修改了文件pgadmin4/pgadmin/utils/driver/psycopg2/connection.py
上的pgadmin代码以显示数据库角色。
方法名称:execute_async 变化
d = self.conn.get_dsn_parameters()
current_app.logger.log(
30,
u"Execute (async) by {db_user} for server #{server_id} - {conn_id} (Query-id: "
u"{query_id}):\n{query}".format(
db_user=d['user'],
server_id=self.manager.sid,
conn_id=self.conn_id,
query=query.decode('utf-8'),
query_id=query_id
)
)