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 :
- 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.
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.
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.
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
<
[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]