syslog(2) | System Calls Manual | syslog(2) |
syslog, klogctl - Lire et/ou effacer les tampons circulaires de messages du noyau ; définir console_loglevel
Bibliothèque C standard (libc, -lc)
#include <sys/klog.h> /* Définition des constantes SYSLOG_* */ #include <sys/syscall.h> /* Définition des constantes SYS_* */ #include <unistd.h>
int syscall(SYS_syslog, int type, char *bufp, int len);
/* L'interface de la glibc */ #include <sys/klog.h>
int klogctl(int type, char *bufp, int len);
Note : vous cherchez sans doute la fonction de la bibliothèque C syslog() qui communique avec syslogd(8) ; reportez-vous à syslog(3) pour plus de détails.
Cette page décrit l'appel système du noyau syslog() qui est utilisé pour contrôler le tampon du noyau printk() ; la fonction d'enveloppe de la glibc correspondant à cet appel système est klogctl().
Le noyau dispose d'un tampon circulaire d'une longueur LOG_BUF_LEN dans lequel il stocke les messages fournis en paramètre à la fonction du noyau printk() (sans tenir compte du niveau de journalisation). Dans les premiers noyaux, LOG_BUF_LEN avait pour valeur 4096 ; à partir de Linux 1.3.54, elle valait 8192 ; à partir de Linux 2.1.113, elle valait 16384 ; depuis Linux 2.4.23/2.6, la valeur est une option de configuration du noyau (CONFIG_LOG_BUF_SHIFT, valeur par défaut dépendant de l'architecture). Depuis Linux 2.6.6, la commande de type 10 (voir plus bas) renvoie la taille du tampon.
L'argument type détermine quelle action est réalisée par cette fonction. La liste ci-dessous précise les valeurs que peut prendre type. Les noms symboliques sont définis dans les sources du noyau, mais ne sont pas exportés dans l'espace utilisateur ; vous devrez donc utiliser les identifiants numériques ou redéfinir vous-même les noms.
Toutes les commandes, excepté 3 et 10, nécessitent des privilèges. Dans les noyaux Linux avant Linux 2.6.37, seules les commandes de type 3 à 10 étaient permises aux processus non privilégiés ; depuis Linux 2.6.37, les commandes de type 3 et 10 sont permises à ces processus seulement si /proc/sys/kernel/dmesg_restrict vaut 0. Avant Linux 2.6.37, « privilégié » signifiait que l'appelant avait la capacité CAP_SYS_ADMIN. Depuis Linux 2.6.37, « privilégié » signifie que l’appelant soit la capacité CAP_SYS_ADMIN (maintenant obsolète pour cet usage), soit la (nouvelle) capacité CAP_SYSLOG.
/proc/sys/kernel/printk est un fichier accessible en écriture qui contient quatre valeurs qui affectent le comportement la fonction printk() du noyau lors de l'affichage ou de la journalisation des messages d'erreur. Ces quatre valeurs sont :
Chaque message de printk() a son propre niveau de journalisation. Si le niveau de journalisation n'est pas explicitement précisé comme partie du message, il vaut par défaut default_message_loglevel. Le niveau de journalisation a par convention les significations suivantes :
Constante du noyau | Valeur du niveau | Signification |
KERN_EMERG | 0 | Le système est inutilisable |
KERN_ALERT | 1 | Des actions doivent être entreprises immédiatement |
KERN_CRIT | 2 | Les conditions sont critiques |
KERN_ERR | 3 | Des erreurs se produisent |
KERN_WARNING | 4 | Des avertissements se présentent |
KERN_NOTICE | 5 | Condition normale, mais message significatif |
KERN_INFO | 6 | Message d'information simple |
KERN_DEBUG | 7 | Messages de débogage |
La routine du noyau printk() n'affiche un message sur la console que si son niveau de journalisation est inférieur à la valeur console_loglevel.
Quand type est égal à 2, 3 ou 4, un appel réussi à syslog() renvoie le nombre d'octets lus. Pour le type 9, syslog() renvoie le nombre d'octets disponibles actuellement en lecture dans le tampon de journalisation du noyau. Pour le type 10, syslog() renvoie la taille totale du tampon de journalisation du noyau. Pour les autres valeurs de type, 0 est renvoyé en cas de succès.
En cas d'erreur, -1 est renvoyé et errno est défini pour préciser l'erreur.
Cet appel système est spécifique à Linux et ne devrait pas être employé dans des programmes destinés à être portables.
Depuis longtemps, des gens trouvent regrettable qu'un appel système et une routine de bibliothèque aient le même nom bien qu'ils n'aient pas de rapport entre eux.
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 Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
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 |