Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]
SYSLOG
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- CONFORMITÉ
- NOTES
- VOIR AUSSI
- TRADUCTION
NOM
syslog, klogctl - Lire et/ou effacer les tampons circulaires de messages du
noyau.
SYNOPSIS
/* L'interface GlibC */
#include <sys/klog.h>
int klogctl(int type, char *bufp, int len);
/* L'appel système déclaré à la main */
#include <unistd.h>
#include <linux/unistd.h>
#include <errno.h>
_syscall3(int, syslog, int, type, char *, bufp, int, len)
/* Il peut être préférable d'utiliser syscall(2) ; voir intro(2) */
int syslog(int type, char *bufp, int len);
DESCRIPTION
Si vous avez besoin de la fonction syslog() de la libc (qui communique
avec syslogd(8)), voyez syslog(3). L'appel système de ce nom contrôle
le tampon printk() du noyau, et la version glibc est appelée
klogctl().
L'argument type détermine l'action effectuée 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 jusqu'à 4Ko des derniers messages du tampon circulaire.
* 4 -- Lire et effacer les 4Ko derniers messages du tampon circulaire.
* 5 -- Vider le tampon circulaire
* 6 -- Désactiver printk sur la console
* 7 -- Activer printk sur la console
* 8 -- Indiquer le niveau des messages à afficher sur la console.
* 9 -- Renvoie le nombre de caractères non lus dans le tampon.
*/
Seule la fonction 3 est autorisée pour les processus non
superutilisateur. (La fonction 9 a été ajoutée dans le 2.4.10)
Le tampon de journalisation du noyau.
Le noyau dispose d'un tampon circulaire d'une longueur LOG_BUF_LEN (4096 à
l'origine, 8192 depuis le 1.3.54, et 16384 depuis la version 2.1.113) dans
laquelle il stocke les messages reçus par la fonction printk(). Ce tampon
est le journal du système.
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 être lues qu'une seule fois. C'est la fonction
exécutée 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 manière non destructive). Il ne lira pas plus que ce qui a été
écrit dans le tampon depuis la dernière commande de lecture destructrice. Il
renvoie le nombre d'octets lus.
L'appel syslog(4,buf,len) effectue la même chose puis vide le
tampon.
L'appel syslog(5,dummy,idummy) vide uniquement le tampon.
Le niveau de journalisation (loglevel)
La routine du noyau printk() n'écrira un message sur la console que si
celui-ci a un niveau de journalisation inférieur à la valeur de la variable
console_loglevel. Initialement la valeur de cette variable est
DEFAULT_CONSOLE_LOGLEVEL (7), mais elle est augmentée à 10 si la ligne de
commande du noyau contient le mot « debug », et à 15 si une faute du noyau
se produit (en réalité, les valeurs 10 et 15 sont idiotes et n'apportent
rien de plus que 8). Cette variable est positionnée (dans l'intervalle
1-8) par l'appel syslog(8,dummy,value). L'appel
syslog(type,dummy,idummy) avec type égal à 6 ou 7 la
positionne à 1 (seulement les messages kernel panics) ou 7 (tout sauf les
messages de débogage), respectivement.
Chaque ligne de texte dans un message a son propre niveau de
journalisation. Ce niveau est DEFAULT_MESSAGE_LOGLEVEL - 1 (6) à moins que
la ligne ne commence par <d> où d est un chiffre dans
l'intervalle 1-7. La signification conventionnelle des niveaux de
journalisation est définie dans <linux/kernel.h> comme suit :
#define KERN_EMERG "<0>" /* système inutilisable */
#define KERN_ALERT "<1>" /* action à effectuer immédiatement */
#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 débugging */
VALEUR RENVOYÉE
En cas d'erreur, -1 est renvoyé et errno contient le code d'erreur. En
cas de réussite syslog() renvoie le nombre d'octets lus pour type
valant 2, 3 ou 4, et 0 sinon.
ERREURS
- EINVAL
-
Mauvais paramètres
- EPERM
-
Une tentative de changer console_loglevel ou d'effacer le tampon circulaire
du noyau par un processus sans les privilèges superutilisateur.
- ERESTARTSYS
-
L'appel système a été interrompu par un signal, et rien n'a été lu. (Ceci ne
peut être vu que pendant un suivi de processus).
CONFORMITÉ
Cet appel système est spécifique Linux et ne doit pas être employé dans des
programmes destinés à être portables.
NOTES
Depuis longtemps, des gens trouvent regrettable qu'un appel système du noyau
et une routine de bibliothèque aient le même nom bien qu'ils n'aient pas de
rapport entre eux. Dans les libc4 et libc5 le numéro de cet appel système
était défini par SYS_klog. Dans la glibc 2.0, l'appel système est nommé
klogctl().
VOIR AUSSI
syslog(3)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|