NOM

closelog, openlog, syslog, vsyslog - Envoyer des messages vers le journaliseur du système

BIBLIOTHÈQUE

Bibliothèque C standard ( libc, -lc)

SYNOPSIS

#include <syslog.h>
void openlog(const char *ident, int option, int type_programme);
void syslog(int priorité, const char *format, ...);
void closelog(void);
void vsyslog(int priorité, const char *format, va_list liste_arguments);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
vsyslog() :
    Depuis la glibc 2.19 :
        _DEFAULT_SOURCE
    glibc 2.19 et antérieures :
        _BSD_SOURCE

DESCRIPTION

openlog()

openlog() ouvre une connexion vers le journaliseur du système pour un programme.
La chaîne pointée par ident est ajoutée en préfixe de chaque message et son contenu est en général le nom du programme. Si la valeur de ident est NULL, le nom du programme est utilisé (POSIX.1-2008 ne précise pas le comportement si la valeur de ident est NULL).
L'argument option précise les attributs contrôlant le fonctionnement de openlog() et des appels ultérieurs à syslog(). L'argument type_programme définit une valeur par défaut à utiliser lorsque ce paramètre n'est pas fourni lors des appels ultérieurs à syslog(). Les valeurs pour option et type_programme sont décrites plus bas.
L'utilisation de openlog() est optionnelle. Cette fonction sera automatiquement invoquée par syslog() si besoin. Dans ce cas, ident aura la valeur NULL par défaut.

syslog() et vsyslog()

syslog() génère un message de journalisation qui sera distribué par syslogd(8).
L'argument priorité est formé en effectuant un OU binaire entre les valeurs de type_programme et niveau (voir description plus loin). Si aucune valeur de type_programme n'entre dans ce OU binaire, c'est la valeur par défaut définie par openlog() qui sera utilisée, ou, s'il n'y a pas eu d'appel précédent à openlog(), c'est la valeur de LOG_USER qui sera utilisée par défaut.
Les arguments restants sont un format, comme dans printf(3) et tous les arguments nécessaires pour ce format, sauf que la séquence de deux caractères %m sera remplacée par la chaîne du message d'erreur strerror(errno). L'ajout d'un saut de ligne final à la chaîne de format n'est pas nécessaire.
La fonction vsyslog() réalise la même tâche que syslog() à la différence qu'elle prend un ensemble d'arguments obtenus à l'aide des macros de stdarg(3) pour les listes variables d'arguments.

closelog()

closelog() ferme le descripteur de fichier utilisé pour écrire au journaliseur du système. L'utilisation de closelog() est facultative.

Valeurs pour option

L'argument option d'openlog() est un masque de bits construit à l'aide d'un OU binaire entre les constantes suivantes :
LOG_CONS
Écrire directement sur la console système s'il y a une erreur durant la transmission vers le journaliseur du système.
LOG_NDELAY
Ouvrir la connexion immédiatement (normalement, la connexion est ouverte lors de la journalisation du premier message). Cela peut s'avérer utile, par exemple, lorsqu'un appel subséquent à chroot(2) rend inaccessible le nom de chemin utilisé en interne par le programme à l'origine du message de journalisation.
LOG_NOWAIT
Ne pas attendre la fin des processus enfants qui ont pu être créés lors de l'enregistrement du message. La bibliothèque GNU C ne créant pas de processus enfant, cette option est sans effet sous Linux.
LOG_ODELAY
L'inverse de LOG_NDELAY ; l'ouverture de la connexion est repoussée jusqu'à l'invocation de syslog(). C'est le comportement par défaut et l'option n'a donc pas besoin d'être indiquée.
LOG_PERROR
Écrire sur stderr également (pas dans POSIX.1-2001, ni dans POSIX.1-2008).
LOG_PID
Inclure le PID de l'appelant dans chaque message.

Valeurs pour type_programme

L'argument type_programme permet d'indiquer le type du programme qui est à l'origine de la journalisation du message. Cela permet au fichier de configuration de spécifier que les messages seront traités différemment en fonction du type de programme qui les a émis.
LOG_AUTH
Messages de sécurité/autorisation.
LOG_AUTHPRIV
Messages de sécurité/autorisation (privés).
LOG_CRON
Messages de démon horaire (cron et at).
LOG_DAEMON
Messages de démons du système sans type de programme particulier.
LOG_FTP
Messages de démon ftp.
LOG_KERN
Messages du noyau (ils ne peuvent pas être produits par des processus d’utilisateur).
LOG_LOCAL0 jusqu’à LOG_LOCAL7
Réservés pour des utilisations locales.
LOG_LPR
Messages du sous-système d'impression.
LOG_MAIL
Messages du sous-système de courrier.
LOG_NEWS
Messages du sous-système des nouvelles USENET.
LOG_SYSLOG
Messages internes de syslogd(8).
LOG_USER (défaut)
Messages utilisateur génériques.
LOG_UUCP
Messages du sous-système UUCP.

Valeurs pour niveau

Cela détermine l'importance du message. Les niveaux, dans l'ordre d'importance décroissante, sont :
LOG_EMERG
Le système est inutilisable.
LOG_ALERT
Des actions doivent être entreprises immédiatement.
LOG_CRIT
Les conditions sont critiques.
LOG_ERR
Des erreurs se produisent.
LOG_WARNING
Des avertissements se présentent.
LOG_NOTICE
Évènement normal mais important.
LOG_INFO
Message d'information simple.
LOG_DEBUG
Message de débogage.
La fonction setlogmask(3) permet de restreindre l'enregistrement à certains niveaux uniquement.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface Attribut Valeur
openlog(), closelog() Sécurité des threads MT-Safe
syslog(), vsyslog() Sécurité des threads MT-Safe env locale
 

STANDARDS

Les fonctions openlog(), closelog() et syslog() (mais pas vsyslog()) sont spécifiées dans SUSv2, POSIX.1-2001 et POSIX.1-2008.
POSIX.1-2001 indique uniquement les valeurs LOG_USER et LOG_LOCAL* pour l'argument type_programme. Néanmoins, à l'exception de LOG_AUTHPRIV et LOG_FTP, les autres valeurs pour type_programme sont disponibles sur la plupart des systèmes UNIX.
La valeur LOG_PERROR pour option n'est pas spécifiée par POSIX.1-2001 ou POSIX.1-2008, mais elle est disponible dans la plupart des versions d'UNIX.

NOTES

Le paramètre ident durant l'appel à openlog() est généralement stocké tel quel. Ainsi, si la chaîne vers laquelle il pointe est modifiée, syslog() peut préfixer la chaîne modifiée, et si la chaîne cesse d'exister, le résultat est indéfini. Le comportement le plus portable est l'utilisation d'une chaîne constante.
Ne jamais passer directement une chaîne formatée par l'utilisateur, utilisez plutôt :

syslog(priority, "%s", chaîne);

VOIR AUSSI

journalctl(1), logger(1), setlogmask(3), syslog.conf(5), syslogd(8)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]>, Cédric Boutillier <[email protected]>, Frédéric Hantrais <[email protected]> et Lucien Gentis <[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à [email protected]