Scroll to navigation

syslog(3) Library Functions Manual syslog(3)

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 :

Écrire directement sur la console système s'il y a une erreur durant la transmission vers le journaliseur du système.
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.
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.
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.
Écrire sur stderr également (pas dans POSIX.1-2001, ni dans POSIX.1-2008).
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.

Messages de sécurité/autorisation.
Messages de sécurité/autorisation (privés).
Messages de démon horaire (cron et at).
Messages de démons du système sans type de programme particulier.
Messages de démon ftp.
Messages du noyau (ils ne peuvent pas être produits par des processus d’utilisateur).
Réservés pour des utilisations locales.
Messages du sous-système d'impression.
Messages du sous-système de courrier.
Messages du sous-système des nouvelles USENET.
Messages internes de syslogd(8).
Messages utilisateur génériques.
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 :

Le système est inutilisable.
Des actions doivent être entreprises immédiatement.
Les conditions sont critiques.
Des erreurs se produisent.
Des avertissements se présentent.
Évènement normal mais important.
Message d'information simple.
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 <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com>, Frédéric Hantrais <fhantrais@gmail.com> et Lucien Gentis <lucien.gentis@waika9.com>

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 à debian-l10n-french@lists.debian.org.

5 février 2023 Pages du manuel de Linux 6.03