Provided by: manpages-fr-dev_4.27.0-1_all 

NOM
syslog, klogctl - Lire et/ou effacer les tampons circulaires de messages du noyau ; définir
console_loglevel
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#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);
DESCRIPTION
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 tampon de journalisation du noyau.
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.
Commandes
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.
SYSLOG_ACTION_CLOSE (0)
Ferme le journal. Actuellement, cette instruction est sans effet.
SYSLOG_ACTION_OPEN (1)
Ouvre le journal. Actuellement, cette instruction est sans effet.
SYSLOG_ACTION_READ (2)
Lecture du journal. Dès que le tampon du journal n'est plus vide, l'appel lit au plus len octets
qu'il place dans le tampon vers lequel pointe bufp. Il renvoie le nombre d'octets lus. Les octets
lus sont supprimés du tampon du journal : les informations ne peuvent être lues qu'une seule fois.
C'est la fonction exécutée par le noyau quand un programme utilisateur lit /proc/kmsg.
SYSLOG_ACTION_READ_ALL (3)
Lecture de tous les messages restant dans le tampon circulaire, qui sont déplacés dans le tampon
vers lequel pointe bufp. L'appel lit les len derniers octets dans le tampon du journal (de manière
non destructive). Il ne lira pas plus que ce qui a été écrit dans le tampon depuis la dernière
exécution de la commande de nettoyage (commande « clear ring buffer », voir plus bas la
commande 5). L'appel renvoie le nombre d'octets lus.
SYSLOG_ACTION_READ_CLEAR (4)
Lecture et suppression de tous les messages du tampon circulaire. L'appel effectue exactement la
même chose que la commande de type 3, mais exécute également la commande « clear ring buffer ».
SYSLOG_ACTION_CLEAR (5)
L'appel ne fait qu'exécuter la commande « clear ring buffer ». Les arguments bufp et len ne sont
pas pris en compte.
Cette fonction ne vide pas réellement le tampon circulaire. Plus exactement, elle définit une
variable de suivi d'activité du noyau qui détermine ce que renvoient les commandes 3
(SYSLOG_ACTION_READ_ALL) et 4 (SYSLOG_ACTION_READ_CLEAR). Cette commande est sans effet sur les
commandes 2 (SYSLOG_ACTION_READ) et 9 (SYSLOG_ACTION_SIZE_UNREAD).
SYSLOG_ACTION_CONSOLE_OFF (6)
La commande sauvegarde la valeur actuelle de console_loglevel puis affecte la valeur
minimum_console_loglevel à console_loglevel afin que les messages soient affichés sur la console.
Avant Linux 2.6.32, la commande affectait seulement la valeur minimum_console_loglevel à
console_loglevel. Reportez-vous aux explications relatives à /proc/sys/kernel/printk plus bas.
Les arguments bufp et len ne sont pas pris en compte.
SYSLOG_ACTION_CONSOLE_ON (7)
Si la commande SYSLOG_ACTION_CONSOLE_OFF a été exécutée précédemment, cette commande réaffecte à
console_loglevel la valeur sauvegardée au moment de cette exécution. Avant Linux 2.6.32, cette
commande réaffectait la valeur default_console_loglevel à console_loglevel. Reportez-vous aux
explications relatives à /proc/sys/kernel/printk plus bas.
Les arguments bufp et len ne sont pas pris en compte.
SYSLOG_ACTION_CONSOLE_LEVEL (8)
L'appel positionne console_loglevel à la valeur indiquée dans len, qui doit être un entier compris
entre 1 et 8 (inclus). Le noyau applique implicitement une valeur minimale
minimum_console_loglevel pour len Consultez la section Le niveau de journalisation (log level)
pour plus de détails. L'arguments bufp n'est pas pris en compte.
SYSLOG_ACTION_SIZE_UNREAD (9) (à partir de Linux 2.4.10)
L'appel renvoie le nombre d'octets disponibles en lecture dans le tampon de journalisation du
noyau au moment de l'appel, au moyen de la commande 2 (SYSLOG_ACTION_READ). Les arguments bufp et
len ne sont pas pris en compte.
SYSLOG_ACTION_SIZE_BUFFER (10) (à partir de Linux 2.6.6)
Cette commande renvoie la taille totale du tampon du journal du noyau. Les arguments bufp et len
ne sont pas pris en compte.
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
/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 :
console_loglevel
Seuls les messages dont le niveau de journalisation est inférieur à cette valeur seront affichés
sur la console. La valeur par défaut du champ est DEFAULT_CONSOLE_LOGLEVEL (7), mais elle est
ramenée à 4 si la ligne de commande du noyau contient le mot clef « quiet », à 10 si la ligne de
commande contient le mot « debug », et à 15 en cas d'erreur du noyau (les valeurs 10 et 15 n'ont
en fait pas de sens car elles équivalent à 8). La valeur console_loglevel peut prendre une valeur
(comprise entre 1 et 8) définie par un appel à syslog() avec un type valant 8.
default_message_loglevel
Cette valeur fournira le niveau de journalisation des messages de printk() pour lesquels un niveau
de journalisation n'est pas explicitement défini. Jusqu'à Linux 2.6.38 inclus, la valeur par
défaut inscrite dans le code pour ce champ était 4 (KERN_WARNING) ; à partir de Linux 2.6.39, la
valeur par défaut est déterminée par l'option de configuration du noyau
CONFIG_DEFAULT_MESSAGE_LOGLEVEL, qui par défaut vaut 4.
minimum_console_loglevel
Ce champ contient la valeur minimale qui peut être affectée à console_loglevel.
default_console_loglevel
La valeur par défaut de console_loglevel.
Le niveau de journalisation (log level)
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.
VALEUR RENVOYÉE
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.
ERREURS
EINVAL Mauvais paramètres (par exemple, mauvais type ; ou type égal à 2, 3 ou 4, buf est NULL ou len est
inférieur à 0 ; ou pour type égal à 8, le niveau level est en dehors de l'intervalle allant de 1 à
8).
ENOSYS L'appel système syslog() n'est pas disponible car le noyau a été compilé sans que l'option
CONFIG_PRINTK de configuration du noyau n'ait été activée.
EPERM Un changement de console_loglevel ou un effacement du tampon circulaire de messages du noyau par
un processus sans les privilèges suffisants (plus précisément sans la capacité CAP_SYS_ADMIN ou
CAP_SYSLOG) a été tenté.
ERESTARTSYS
L'appel système a été interrompu par un signal, et rien n'a été lu. (Cela ne peut être vu que
pendant un suivi de processus).
STANDARDS
Linux.
HISTORIQUE
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.
VOIR AUSSI
dmesg(1), syslog(3), capabilities(7)
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 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.
Pages du manuel de Linux 6.9.1 2 mai 2024 syslog(2)