syslog(3) | Library Functions Manual | syslog(3) |
closelog, openlog, syslog, vsyslog - Envoyer des messages vers le journaliseur du système
Bibliothèque C standard (libc, -lc)
#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);
vsyslog() :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE
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() 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() ferme le descripteur de fichier utilisé pour écrire au journaliseur du système. L'utilisation de closelog() est facultative.
L'argument option d'openlog() est un masque de bits construit à l'aide d'un OU binaire entre les constantes suivantes :
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.
Cela détermine l'importance du message. Les niveaux, dans l'ordre d'importance décroissante, sont :
La fonction setlogmask(3) permet de restreindre l'enregistrement à certains niveaux uniquement.
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 |
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.
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);
journalctl(1), logger(1), setlogmask(3), syslog.conf(5), syslogd(8)
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 |