Salta el contingut
 

Registre del servidor

Joan Puigcerver Ibáñez

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Registre del servidor

El registre del servidor (server log) és un fitxer de text on PostgreSQL escriu què li passa: l'arrancada i l'aturada, els errors i els avisos, els checkpoints i, si s'activa, les connexions o les consultes lentes. És la primera font d'informació per diagnosticar qualsevol problema.

No s'ha de confondre el registre del servidor amb el diari de transaccions (WAL).

El WAL, que es guarda a pg_wal/, registra en format binari cada canvi en les dades i és imprescindible per a la recuperació. En canvi, el registre del servidor només conté missatges informatius i es pot esborrar sense perdre dades. El WAL es tracta en els apunts de Còpies de seguretat.

Documentació oficial: Error Reporting and Logging – PostgreSQL

Destinació del registre

El paràmetre logging_collector decideix on s'escriuen els missatges. Si està desactivat, el servidor els envia a l'eixida d'errors; si està activat, un procés s'encarrega de guardar-los en fitxers i de rotar-los:

SHOW logging_collector;
 logging_collector
--------------------
 on

En la imatge oficial de Docker, logging_collector està desactivat per defecte i els missatges es consulten amb docker logs.

Quan el col·lector està activat, la ubicació i el nom dels fitxers es configuren amb aquests paràmetres de postgresql.conf:

  • log_directory: directori dels fitxers de registre. És relatiu a PGDATA, tret que s'indique una ruta absoluta. Per defecte, log.
  • log_filename: nom dels fitxers, amb codis de data. Per defecte, postgresql-%Y-%m-%d_%H%M%S.log.
  • log_rotation_age: temps màxim abans de començar un fitxer nou. Per defecte, 1d.
  • log_rotation_size: mida màxima abans de començar un fitxer nou. Per defecte, 10MB.

Per saber quin és el fitxer on s'està escrivint en aquest moment, s'utilitza la funció pg_current_logfile():

SELECT pg_current_logfile();
          pg_current_logfile
---------------------------------------
 log/postgresql-2026-01-15_120000.log

logging_collector és un paràmetre estàtic: cal reiniciar el servidor perquè s'aplique el canvi.

Contingut del registre

Altres paràmetres determinen què s'escriu en el registre i amb quin format:

  • log_min_messages: nivell mínim dels missatges que es registren. Per defecte, warning.

    Valors de log_min_messages
    Valor Significat
    debug5…debug1 Missatges de depuració, del més al menys detallat
    info Informació sol·licitada implícitament per l'usuari
    notice Informació útil per a l'usuari
    warning Avisos de possibles problemes (valor per defecte)
    error Errors que han avortat una ordre
    log Informació d'interés per a l'administrador
    fatal Errors que han tancat la sessió
    panic Errors que han aturat tot el servidor
  • log_line_prefix: prefix de cada línia, amb codis com %m (data i hora) o %p (PID del procés). Per defecte, %m [%p].

  • log_min_duration_statement: registra les consultes que tarden més dels mil·lisegons indicats. Per defecte, -1 (desactivat).
  • log_connections i log_disconnections: registren els inicis i els tancaments de sessió.
  • log_statement: registra les sentències executades (vegeu Auditoria).

Per exemple, aquesta configuració registra les consultes que tarden més d'un segon i les connexions:

log_min_duration_statement = 1000
log_connections = on
Exemple: Consulta del registre del servidor

Es mostren les últimes línies del fitxer de registre actual des del contenidor:

jpuigcerver@fp:~ $ docker exec postgres16 bash -c 'tail -n 3 $PGDATA/log/postgresql-*.log'
2026-01-15 12:00:01.123 UTC [1] LOG:  database system is ready to accept connections
2026-01-15 12:05:42.518 UTC [87] LOG:  connection authorized: user=postgres database=postgres
2026-01-15 12:06:10.004 UTC [87] LOG:  duration: 1503.271 ms  statement: SELECT pg_sleep(1.5);

S'observa que cada línia comença amb el prefix per defecte (data i PID), seguit del nivell del missatge (LOG) i del text.

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.