SYSLOG(2) Manuel du programmeur Linux SYSLOG(2)
NOM
syslog - Lire et/ou effacer les buffers circulaires de
messages du noyau.
SYNOPSIS
#include <unistd.h>
#include <linux/unistd.h>
_syscall3(int, syslog, int, type, char *, bufp, int, len);
int syslog(int type, char *bufp, int len);
DESCRIPTION
Cette fonction n'est probablement pas celle qui vous
intéresse, regardez plutot syslog(3) pour l'interface avec
la bibliothèque C. Cette page ne documente que l'interface
directe de l'appel système avec le noyau.
L'argument type détermine l'action effectuée par syslog.
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'a 4Ko des derniers messages du buffer circulaire.
* 4 -- Lire et effacer les 4Ko derniers messages du buffer circulaire.
* 5 -- Vider le buffer circulaire
* 6 -- Désactiver printk sur la console
* 7 -- Activer printk sur la console
* 8 -- Indiquer le niveau des messages à afficher sur la console.
*/
Seule la fonction 3 est autorisée pour les processus non
Super-User.
Le buffer de journalisation du noyau.
Le noyau dispose d'un buffer 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 buffer
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
buffer 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.
Linux 9 Avril 1999 1
SYSLOG(2) Manuel du programmeur Linux SYSLOG(2)
L'appel syslog (3,buf,len) lit les len octets depuis le
journal (de manière non destructive). Il renvoie le nom
bre d'octets lus.
L'appel syslog (4,buf,len) effectue la même chose puis
vide le buffer.
L'appel syslog (5,dummy,idummy) vide uniquement le buffer.
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 DEFAULT_CONSOLE_LOGLEVEL (7), mais augmenté
à 10 si la ligne de commande du noyau contient le mot
`debug', et à 15 si une faute du noyau se produit - en
réalite 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ébugging), respective
ment.
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 con
ventionnelle 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
EPERM Une tentative de changer console_loglevel ou
d'effacer le buffer circulaire du noyau par un pro
cessus sans les privilèges Super-User.
EINVAL Mauvais paramètres
Linux 9 Avril 1999 2
SYSLOG(2) Manuel du programmeur Linux SYSLOG(2)
ERESTARTSYS
L'appel système a été interrompu par un signal -
rien n'a été lu.
CONFORMITÉ
Cet appel système est spécifique Linux et ne doit pas être
employé dans des programmes destinés à être portables.
VOIR AUSSI
syslog(3)
TRADUCTION
Christophe Blaess, 1997.
Linux 9 Avril 1999 3