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 11/04/2011 15:41:21

genio
Membre

Fichier postgrèsql.log

Bonjour à tous...
Pourquoi quand je code : log_filename = 'postgresql.log'  dans mon postgresql.conf, je me retrouve avec un fichier log qui se nomme ainsi : postgresql.log.1302527814
Bizarre non ?

Merci pour vos réponses

Hors ligne

#2 11/04/2011 16:25:48

gleu
Administrateur

Re : Fichier postgrèsql.log

Je ne me rappelle plus de la raison pour laquelle ça a été fait ainsi, mais il y a une raison. Ce n'est donc pas un bug smile


Guillaume.

Hors ligne

#3 11/04/2011 17:00:25

arthurr
Membre

Re : Fichier postgrèsql.log

Bonjour,

Vous devez avoir une version inférieure à la 8.4, non ?

Si vous spécifiez un nom de fichier sans échappements, vous devriez prévoir d'utiliser un utilitaire de rotation des journaux pour éviter le risque de remplir le disque entier. Dans les versions précédentes à 8.4, si aucun échappement % n'était présent, PostgreSQL™ aurait ajouté l'epoch de la date de création du nouveau journal applicatif mais ce n'est plus le cas.

1302527814 = lun. 11 avril 2011 15:16:54 CEST

Dernière modification par arthurr (11/04/2011 17:01:51)

Hors ligne

#4 11/04/2011 17:14:55

genio
Membre

Re : Fichier postgrèsql.log

Merci à vous...
effectivement, je suis en 8.2 et je suis en train de tester Pgfouine sur un serveur de recette ...
Qu'est-ce qu'un nom de fichier 'sans échappement' (j'ai lu des trucs la dessus sur le paramètre log_line_prefix, mais je n'ai pas tout compris !)

Merci pour vos réponses...

Hors ligne

#5 11/04/2011 17:25:24

gleu
Administrateur

Re : Fichier postgrèsql.log

Les échappements, ce sont les % suivi d'une lettre. Ils sont remplacés par une information dépendant du caractère. Par exemple, %H est remplacé par l'heure. On appelle ça aussi des caractères jokers.


Guillaume.

Hors ligne

#6 11/04/2011 17:29:53

arthurr
Membre

Re : Fichier postgrèsql.log

http://www.linux-kheops.com/doc/man/man … ime.3.html

Pour ma part, je configure mes logs comme ceci :

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%d.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0

Les fichiers se trouvent dans $PGDATA/pg_log/
Ils se nomment : postgresql-<N° du jour du mois en cours>.log
Ils changent automatiquement de nom tous les jours.
J'ai donc 31 fichiers de logs max sur mon serveur.

Hors ligne

#7 12/04/2011 15:25:14

genio
Membre

Re : Fichier postgrèsql.log

Merci à vous pour vos éclaircissements...
Donc, j'avance dans Pgfouine mais je ne comprend pas les erreurs ci-dessous, après exécution de pgfouine :

+ pgfouine.php -file /var/akio/db/aic/pg_log/postgresql-2011-04-12_151348.log -database akio -format html-with-graphs -report /tmp/akio/pgfouine_report.html=overall,bytype,hourly,slowest,n-mosttime,n-mostfrequent,n-slowestaverage,n-mostfrequenterrors
pgFouine did not find any valid PostgreSQL log line in your log file:
* check that PostgreSQL uses an english locale for logging (lc_messages in your postgresql.conf),
* check that you use the -logtype option (syslog, stderr) according to your log file,
* if you use syslog and log_line_prefix, check that your log_line_prefix has a trailing space,
* if you use stderr, check that your log_line_prefix is of the form '%t [%p]: [%l-1] '.

Or j'ai les variables suivantes dans mon postgrès.conf :
lc_messages = 'en_US.UTF-8'     
log_destination = 'stderr'           
redirect_stderr = on     
log_line_prefix = '%t [%p]: [%l-1] '

Pouvez-vous m'aider ?

Hors ligne

#8 12/04/2011 15:28:38

genio
Membre

Re : Fichier postgrèsql.log

je vous envoie aussi un extrait de ma log :
2011-04-12 15:13:48 CEST [10694]: [1-1] LOG:  database system was shut down at 2011-04-12 15:13:42 CEST
2011-04-12 15:13:48 CEST [10694]: [2-1] LOG:  checkpoint record is at 56/30DB05C8
2011-04-12 15:13:48 CEST [10694]: [3-1] LOG:  redo record is at 56/30DB05C8; undo record is at 0/0; shutdown TRUE
2011-04-12 15:13:48 CEST [10694]: [4-1] LOG:  next transaction ID: 0/10711376; next OID: 106855
2011-04-12 15:13:48 CEST [10694]: [5-1] LOG:  next MultiXactId: 50; next MultiXactOffset: 99
2011-04-12 15:13:48 CEST [10694]: [6-1] LOG:  database system is ready
2011-04-12 15:14:05 CEST [10759]: [1-1] LOG:  duration: 510.231 ms  statement: SELECT d.datname as "Name",
               r.rolname as "Owner",
               pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding"
        FROM pg_catalog.pg_database d
          JOIN pg_catalog.pg_roles r ON d.datdba = r.oid
        ORDER BY 1;
2011-04-12 15:15:06 CEST [10917]: [1-1] LOG:  duration: 713.306 ms  statement: set datestyle to 'ISO'; select version(), case when pg_encoding_to_char(1) = 'SQL_ASCII' then 'UNKNOWN' else getdatabaseencoding() end;
2011-04-12 15:15:06 CEST [10917]: [2-1] LOG:  duration: 161.249 ms  statement: set client_encoding = 'UNICODE'
2011-04-12 15:15:07 CEST [10917]: [3-1] LOG:  duration: 326.314 ms  statement:

Hors ligne

#9 12/04/2011 16:37:12

gleu
Administrateur

Re : Fichier postgrèsql.log

Comme indiqué dans le message d'erreur, il vous manque l'option -logtype pour indiquer le format de votre fichier de traces (syslog ou stderr, ce dernier dans votre cas).


Guillaume.

Hors ligne

#10 12/04/2011 17:09:38

genio
Membre

Re : Fichier postgrèsql.log

Merci Guillaume, ça fonctionne !
pouvez-vous maintenant me dire quelle est la différence entre une exécution de pgfouine avec l'option -database et sans cette option...
Merci d'avance..

Hors ligne

#11 12/04/2011 17:55:38

gleu
Administrateur

Re : Fichier postgrèsql.log

L'option database permet de filtrer les requêtes à traiter par base de données. Par exemple, "-database b1" permet de faire un rapport que pour les requêtes de la base de données b1. Par contre, votre  log_line_prefix n'est pas configuré pour permettre ça.


Guillaume.

Hors ligne

#12 13/04/2011 15:20:33

genio
Membre

Re : Fichier postgrèsql.log

Merci Gleu...
mais vu que pgfouine fonctionne avec un fichier log en entrée, c'est automatiquement celui de la database que l'on veut surveiller, donc je ne vois pas l'utilité d'un tel paramètre... à moins qu'une log puisse être partagée par deux instances !
A moins que ce paramètre serve à différencier la database 'utilisateur', des base postgrès, template0 et template1... est-ce le cas ?

Hors ligne

#13 13/04/2011 17:51:30

arthurr
Membre

Re : Fichier postgrèsql.log

Un cluster = N databases

Tu peux très bien créer plusieurs bases sur un même cluster :
create database test1;
create database test2;
create database test3;

et identifier les requêtes liées à chaque bases de données dans ton "log_line_prefix" : %d = database name
un log_line_prefix du genre "%t : %d (%u)" va te donner qq chose du genre :
2011-04-13 17:16:08 CEST : test1 (postgres) ...

Hors ligne

#14 14/04/2011 15:16:43

genio
Membre

Re : Fichier postgrèsql.log

Merci Arthurr...
Effectivement je n'avais pas pensé au cluster, car je n'ai qu'une database sur un serveur...
Donc, vous semblez me dire qu'il n'y aurait qu'une seule arborescence ////pg_log sur une architecture 'cluster' avec plusieurs database ?
Me trompe-je ?

Hors ligne

#15 14/04/2011 18:08:10

gleu
Administrateur

Re : Fichier postgrèsql.log

Non, vous ne vous trompez pas. Par contre, il est clair que vous n'avez pas qu'une seule base. Vous devez avoir au moins template0, template1, voire même postgres.


Guillaume.

Hors ligne

#16 15/04/2011 11:48:18

genio
Membre

Re : Fichier postgrèsql.log

Oui bien sûr, je ne parlais pas des databases 'systeme' Postgrès (postgrès, template0 etc...), mais bien de databases applicatives !

Merci pour vos éclaircissements...

Hors ligne

Pied de page des forums