Как записать в файл текущего пользователя pgAdmin или текущего пользователя БД? - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу иметь контрольный журнал на 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;

Любая помощь приветствуется. Спасибо

1 Ответ

0 голосов
/ 18 апреля 2019

Я закончил тем, что изменил код pgadmin в файле pgadmin4/pgadmin/utils/driver/psycopg2/connection.py, чтобы показать роль БД.

Имя метода: 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
            )
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...