Provided by: manpages-fr-dev_4.19.0-7_all bug

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

       Cet  appel  système  est  spécifique  à  Linux  et  ne  devrait  pas être employé dans des
       programmes destinés à être portables.

NOTES

       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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.