Manpages

NAAM

syslog − lees en/of wis kernel bericht-ring-buffer; zet "console_loglevel" {console log-niveau}

OVERZICHT

#include <unistd.h>

#include <linux/unistd.h>

_syscall3(int, syslog, int, soort, char *, bufw, int, len);

int syslog(int soort, char *bufw, int len);

BESCHRIJVING

Dit is waarschijnlijk niet de functie waar je geïnteresseerd in bent. Kijk naar syslog(3) voor de C bibliotheek interface. Deze pagina beschrijft alleen de kale systeem aanroep interface.

Het soort argument bepaald de daad genomen door syslog.

Citerend van {vertaald} kernel/printk.c:
/*
* Commands to sys_syslog:
*
* 0 -- Sluit het log. Momenteel een NOP {niet operatie}.
* 1 -- Open het log. Momenteel een NOP.
* 2 -- Lees van het log.
* 3 -- Lees tot de laatste 4k van de berichten in de ring buffer.
* 4 -- Lees en wis de laatste 4k van de berichten in de ring
* buffer. */
* 5 -- Wis ring buffer.
* 6 -- Zet "printk"’s-naar-de-console uit.
* 7 -- Zet "printk"’s-naar-de-console aan.
* 8 -- Zet niveau voor berichten geschreven naar de console.
*/

Alleen functie 3 is toegestaan voor niet-root processen.

De kernel log buffer
De kernel heeft een roterende buffer met lengte LOG_BUF_LEN {log buffer lengte} (4096, sinds 1.3.54: 8192, sinds 2.1.113: 16384) waarin berichten die gegeven zijn als argument aan de kernel functie printk() bewaard worden (ongeacht hun logniveau).

De aanroep syslog (2,buf,len) wacht totdat deze kernel log buffer niet-leeg is, en leest dan hoogstens len bytes naar de buffer buf. Het geeft het aantal gelezen bytes terug. Bytes gelezen van het log verdwijnen uit de log buffer: de informatie kunnen maar eenmaal gelezen worden. Dit is de functie die wordt uitgevoerd door de kernel wanneer een gebruiker programma /proc/kmsg leest.

De aanroep syslog (3,buf,len) zal de laatste len bytes van de log buffer lezen (niet-destructief), maar zal niet meer lezen dan geschreven was naar de buffer sinds de laatste ’wis ring buffer’ opdracht (die de buffer helemaal niet wist). Het geeft het aantal gelezen bytes terug.

De aanroep syslog (4,buf,len) doet precies hetzelfde, maar voert ook de ’wis ring buffer’ opdracht uit.

De aanroep syslog (5,dummy,idummy) voert alleen de ’wis ring buffer’ opdracht uit.

Het log-niveau
De kernel routine printk() zal alleen een bericht afdrukken op de console als het een log-niveau heeft dat minder is dan de variabele console_loglevel {console log niveau} (geïnitialiseerd als DEFAULT_CONSOLE_LOGLEVEL (7), maar gezet naar 10 als de kernel opdrachtregel het woord ’debug’ bevat, en naar 15 in het geval van een kernel fout - de 10 en 15 zijn gewoon dwaas, en gelijk aan 8). Deze variabele wordt gezet (naar een waarde in het interval 1-8 door de aanroep syslog (8,dummy,value). De aanroepen syslog (soort,dummy,idummy) met soort {soort} gelijk aan 6 of 7, zetten het respectievelijk naar 1 (alleen kernel-panieken) of 7 (alles behalve debug-berichten).

Elke tekstregel in een bericht heeft zijn eigen log-niveau. Dit niveau is DEFAULT_MESSAGE_LOGLEVEL - 1 (6) tenzij de regel start met <d> waar d een getal is in het interval 1-7, in welk geval het niveau d is. De gebruikelijke betekenis van het log-niveau wordt bepaald in <linux/kernel.h> als volgt:

#define KERN_EMERG "<0>" /* {noodgeval} systeem is onbruikbaar */
#define KERN_ALERT "<1>" /* {let op} actie moet onmiddellijk genomen
* * worden */
#define KERN_CRIT "<2>" /* {kritiek} kritieke toestand */
#define KERN_ERR "<3>" /* {fout} fouttoestanden */
#define KERN_WARNING "<4>" /* {waarschuwing} waarschuwings toestanden*/
#define KERN_NOTICE "<5>" /* {merk op} normale maar belangwekkende
* * toestanden */
#define KERN_INFO "<6>" /* {informatie} informatie */
#define KERN_DEBUG "<7>" /* debug-niveau berichten */

TERUGGEEF WAARDE

In het geval van een fout wordt -1 teruggegeven en errno wordt gezet. In het andere geval als soort gelijk is aan 2, 3 of 4, geeft syslog() het aantal gelezen bytes terug, en anders 0.

FOUTEN

EPERM

{toestemming} Een poging werd gedaan om console_loglevel te veranderen of de kernel berichten ring buffer te wissen door een proces zonder root {"root"} toestemmingen.

EINVAL

{ongeldig} Slechte argumenten.

ERESTARTSYS

{herstart systeem} Systeem aanroep werd onderbroken door een signaal - niets werd gelezen.

VOLDOET AAN

Deze systeem aanroep is Linux-eigen en zou niet gebruikt moeten worden in programma’s die draagbaar bedoeld zijn.

ZIE OOK

syslog(3) {systeem log}

VERTALING

Dit is een handleiding uit manpages-dev 1.29. Alles wat tussen ’{’..’}’ staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Email naar <manpages-nl [AT] nl.org>.

$Id: syslog.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $