Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
syslog, klogctl - Lire et/ou effacer les tampons circulaires de
messages du noyau
SYNOPSIS
int syslog(int type, char *bufp, int len);
/* Pas de fonction fournie par glibc */
/* L'interface glibc */
#include <sys/klog.h>
int klogctl(int type, char *bufp, int len);
DESCRIPTION
Si vous avez besoin de la fonction syslog() de la bibliotheque C (qui
communique avec syslogd(8)), voyez syslog(3). L'appel systeme de ce nom
controle le tampon printk() du noyau, et la version glibc est appelee
klogctl().
L'argument type determine l'action effectuee par cette fonction.
Extrait de kernel/printk.c:
/*
* Commandes de sys_syslog :
*
* 0 -- Fermer le journal (actuellement NOP)
* 1 -- ouvrir le journal (actuellement NOP)
* 2 -- Lire depuis le journal
* 3 -- Lire tous les derniers messages du tampon circulaire
* 4 -- Lire et effacer tous les derniers messages du tampon circulaire
* 5 -- Vider le tampon circulaire
* 6 -- Desactiver printk sur la console
* 7 -- Activer printk sur la console
* 8 -- Indiquer le niveau des messages a afficher sur la console
* 9 -- Renvoie le nombre de caracteres non lus dans le tampon
* 10 -- Renvoie la taille du tampon de journalisation
*/
Seules les commandes 3 et 10 sont permises pour les processus non
privilegies. Le type 9 a ete ajoute dans 2.4.10 ; le type 10 dans
2.6.6.
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 parametre a la fonction du
noyau printk() (sans tenir compte du niveau de journalisation). Dans
les premiers noyaux, LOG_BUF_LEN avait pour valeur 4096 ; a partir du
noyau 1.3.54 elle valait 8192 ; a partir du noyau 2.1.113 elle valait
16384; depuis 2.4.23/2.6 la valeur est une option de configuration du
noyau. Dans les noyaux recent, la taille peut etre demandee avec la
commande de type 10.
L'appel syslog(2,buf,len) attend que ce journal soit non vide, puis lit
au plus len octets qu'il place dans le tampon buf. Il renvoie le nombre
d'octets lus. Les octets lus sont extraits du journal : les
informations ne peuvent etre lues qu'une seule fois. C'est la fonction
executee par le noyau quand un programme utilisateur lit /proc/kmsg.
L'appel syslog(3,buf,len) lit les len dernier octets depuis le journal
(de maniere non destructive). Il ne lira pas plus que ce qui a ete
ecrit dans le tampon depuis la derniere commande de nettoyage (commande
<< clear ring buffer >>, qui ne nettoie pas en fait le tampon). Il
renvoie le nombre d'octets lus.
L'appel syslog(4,buf,len) effectue la meme chose puis vide le tampon
(avec la commande << clear ring buffer >>).
L'appel syslog(5,dummy,dummy) vide uniquement le tampon (avec la
commande << clear ring buffer >>). (Dans tous les appels pour lesquels
buf ou len est remplace par << dummy >>, la valeur du parametre est
ignore par l'appel).
L'appel syslog(6,dummy,dummy) fixe le niveau de journalisation de la
console au minimum, de telle sorte qu'aucun message n'est affiche sur
la console.
L'appel syslog(7,dummy,dummy) fixe le niveau de journalisation de la
console a la valeur par defaut, de telle sorte que des messages soient
affiches sur la console.
L'appel syslog(8,dummy,level) fixe le niveau de journalisation de la
console a level, qui doit etre un entier compris entre 1 et 8 (inclus).
Consultez la section Le niveau de journalisation (loglevel) pour plus
de details.
L'appel syslog(9,dummy,dummy) renvoie le nombre d'octets actuellement
disponibles en lecture dans le tampon de journalisation du noyau.
L'appel syslog(10,dummy,dummy) renvoie la taille totale du tampon de
journalisation du noyau.
Le niveau de journalisation (loglevel)
La routine du noyau printk() n'ecrira un message sur la console que si
celui-ci a un niveau de journalisation inferieur a la valeur de la
variable console_loglevel. Initialement la valeur de cette variable est
DEFAULT_CONSOLE_LOGLEVEL (7), mais elle est augmentee a 10 si la ligne
de commande du noyau contient le mot << debug >>, et a 15 si une faute
du noyau se produit (en realite, les valeurs 10 et 15 sont idiotes et
n'apportent rien de plus que 8). Cette variable est positionnee (dans
l'intervalle 1-8) par l'appel syslog(8,dummy,value). L'appel
syslog(type,dummy,dummy) avec type egal a 6 ou 7 la positionne a 1
(seulement les messages kernel panics) ou 7 (tout sauf les messages de
debogage), respectivement.
Chaque ligne de texte dans un message a son propre niveau de
journalisation. Ce niveau est DEFAULT_MESSAGE_LOGLEVEL - 1 (6) a moins
que la ligne ne commence par <d> ou d est un chiffre dans l'intervalle
1-7. La signification conventionnelle des niveaux de journalisation est
definie dans <linux/kernel.h> comme suit :
#define KERN_EMERG "<0>" /* systeme inutilisable */
#define KERN_ALERT "<1>" /* action a effectuer immediatement */
#define KERN_CRIT "<2>" /* conditions critiques */
#define KERN_ERR "<3>" /* conditions d'erreurs */
#define KERN_WARNING "<4>" /* message d'avertissement */
#define KERN_NOTICE "<5>" /* normal mais significatif */
#define KERN_INFO "<6>" /* informations */
#define KERN_DEBUG "<7>" /* messages de debugging */
VALEUR RENVOY'EE
Quand type est egal a 2, 3 ou 4, un appel reussi a 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 renvoye en cas de succes.
En cas d'erreur, -1 est renvoye et errno contient le code d'erreur.
ERREURS
EINVAL Mauvais parametres (par exemple, mauvais type ; ou type egal a
2, 3 ou 4 et buf est NULL, ou len est inferieur a 0 ; ou pour
type egal a 8, le niveau level est en dehors de l'intervalle
allant de 1 a 8).
EPERM Une tentative de changer console_loglevel ou d'effacer le tampon
circulaire du noyau par un processus sans les privileges
suffisants (plus precisement sans la capacite CAP_SYS_ADMIN).
ERESTARTSYS
L'appel systeme a ete interrompu par un signal, et rien n'a ete
lu. (Ceci ne peut etre vu que pendant un suivi de processus).
ENOSYS L'appel systeme syslog() n'est pas disponible car le noyau a ete
compile sans que l'option CONFIG_PRINTK de configuration du
noyau n'ait ete activee.
CONFORMIT'E
Cet appel systeme est specifique a Linux et ne devrait pas etre employe
dans des programmes destines a etre portables.
NOTES
Depuis longtemps, des gens trouvent regrettable qu'un appel systeme et
une routine de bibliotheque aient le meme nom bien qu'ils n'aient pas
de rapport entre eux. Dans les libc4 et libc5 le numero de cet appel
systeme etait defini par SYS_klog. Dans la glibc 2.0, l'appel systeme
est nomme klogctl().
VOIR AUSSI
syslog(3)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.