PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 15/12/2009 17:59:53

mich30
Membre

table de log tracage des utilisateurs

Comment faire pour alimenter une table de log qui remplisse
au fur et a mesure l'user , la requete
Existe t'il des tables systémes ???
merci !

Dernière modification par mich30 (15/12/2009 18:00:03)

Hors ligne

#2 15/12/2009 18:02:25

gleu
Administrateur

Re : table de log tracage des utilisateurs

Comment faire pour alimenter une table de log qui remplisse
au fur et a mesure l'user , la requete

Difficile de répondre sans plus de précisions.

Existe t'il des tables systémes ???

Oui (bien que je ne sois pas sûr que ce soit vraiment la réponse attendue).


Guillaume.

Hors ligne

#3 18/12/2009 11:31:28

mich30
Membre

Re : table de log tracage des utilisateurs

j'ai trouvé cela

How to get 'last modified time' of the table in postgres?
Reply from Lou O'Quin on 1/7/2009 5:00 PM

If you want the last time any data was modified, you could handle this within the database by adding a table_log table. It would have at minimum, two fields - the table name, and a timestamp field.

Then, add a record to the log table, and rule(s) to every table, for those tables where you need to check the time of the last data modified. In the rules, (updates, deletes, or inserts,) have the rules update the timestamp in table table_log.

ccomment ca marche , il me faudrez une table log qui m'enreistre l'user la date et les requetes
merci

Hors ligne

#4 18/12/2009 11:58:13

wilka
Membre

Re : table de log tracage des utilisateurs

Vous voulez "log" toutes les requêtes provisoirement (pour debugger ou autre) ou tout le temps même en environnement de production ?

Car dans le premier cas, il est possible d'utiliser le fichier log de postgres (qui sera capable de logger toutes les requetes passées ou supérieur à un certain temps d'execution voir : log_min_duration_statement dans le fichier posgresql.conf)
Celui ci ce configure dans le fichier postgresql.conf (section ERROR REPORTING AND LOGGING)


Par contre ce moyen est tres pratique pour le debuggage, mais ralentit les performances. C'est pour cela que je ne l'utilise ou active que ponctuellement.

Pour l'autre méthode expliquée dans votre post, il s'agit de creer une table avec les champ que vous voulez renseigner ou suivre.
avec des champs du style ( timestamp pour la date heure, type de requete "insert","update","delete" et la table impactée) par contre je ne pense pas qu'on pourra recuperer la requete sql en commande.
Au mieux récuperer l'ancienne valeur et la nouvelle valeur des records. En utilisant les valeurs new et old qu'on peut cumuler dans deux champs.
Après on place des trigger sur les tables concernées, qui vont remplir cette table log.
(Je dois avoir un script de ce genre avec un trigger sur une table cela pourra etre une bonne base pour l'adapter à plusieurs table, si c'est bien ce que vous voulez faire.)

Sinon vous avez un autre moyen, si vous passez par server d'application (par ex: jonas) vous pouvez logger à partir celui ci, ce qui permet aussi d'avoir les requetes qui ne modifient pas les enregistrements.

Dernière modification par wilka (18/12/2009 12:03:53)

Hors ligne

#5 18/12/2009 11:59:34

gleu
Administrateur

Re : table de log tracage des utilisateurs

Il est possible d'avoir une table qui enregistre utilisateur et date, mais il sera impossible de récupérer la requête complète.

Pour plus d'infos, lire http://pgfoundry.org/projects/tablelog/ .

Voir aussi l'outil tablelog (http://pgfoundry.org/projects/tablelog/).


Guillaume.

Hors ligne

Pied de page des forums