Bonjour à tous,

Afin de surveiller une base et surtout les requêtes qui pourraient être en erreur j'ai activé le plugin server_audit.

Configuration du plugin :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
show global VARIABLES like '%server_audit%';
+-------------------------------+---------------------------------+
| Variable_name                 | Value                           |
+-------------------------------+---------------------------------+
| server_audit_events           | QUERY                           |
| server_audit_excl_users       | user                            |
| server_audit_file_path        | /var/log/mysql/server_audti.log |
| server_audit_file_rotate_now  | OFF                             |
| server_audit_file_rotate_size | 1000000                         |
| server_audit_file_rotations   | 9                               |
| server_audit_incl_users       | user                            |
| server_audit_logging          | ON                              |
| server_audit_mode             | 0                               |
| server_audit_output_type      | file                            |
| server_audit_query_log_limit  | 1024                            |
| server_audit_syslog_facility  | LOG_USER                        |
| server_audit_syslog_ident     | mysql-server_auditing           |
| server_audit_syslog_info      |                                 |
| server_audit_syslog_priority  | LOG_ERR                         |
+-------------------------------+---------------------------------+
Mon problème est que le séparateur entre chaque valeur est la virgule et pas de chance c'est le même séparateur que dans le requête.

Exemple d'une ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
20220622 08:35:03,sserver,user,localhost,14858,7002875,QUERY,database,'UPDATE sorderq SET `odlqty` = "6", `soqsta` = "3", `sdhnum` = "LIVHIL22062", `sddlin` = 24000 WHERE `sohnum` = "NORHIL220601" AND `soplin` = 24000 AND `soqseq` = 24000',0
[...]
20220622 08:35:03,server,user,localhost,14858,7002878,QUERY,database,'INSERT INTO sdeliveryd(`sdhnum`, `itmref`, `sddlin`, `netprinot`, `qty`, `rtnqty`, `tsicod0`, `tsicod1`, `tsicod2`, `tsicod3`, `tsicod4`, `rep1`) VALUES("LIVHIL22061", "1-11325", 26000, 0.0, "12", "0", "STA", "05", " ", " ", " ", "093")',0
C'est le dernier champ qui m'intéresse car c'est le code retour de la requête. Maintenant si je veux automatiser le traitement d'erreur (dernier champ <> 0) je ne peux tout simplement pas car du fait du séparateur identique entre les champs de la requête et les champs de la ligne de log, le nombre de colonne varie et le code retour n'a jamais la même position.

Est-ce qu'il est possible de changer dans le plugin le séparateur de champ ?