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 $