syslog - lees en/of wis kernel bericht-ring-buffer; zet
"console_loglevel"
Standard C bibliotheek (libc, -lc)
#include <sys/klog.h> /* Definitie van SYSLOG_* constanten */
#include <sys/syscall.h> /* Definitie van SYS_* constanten */
#include <unistd.h>
int syscall(SYS_syslog, int type, char *bufp, int len);
/* Het glibc interface */
#include <sys/klog.h>
int klogctl(int type, char *bufw, int len);
Opmerking: Mogelijk zoekt u de C bibliotheek functie
syslog(), die praat met syslogd(8), zie syslog(3) voor
details.
Deze pagina beschrijft de kernel syslog() systeem aanroep,
die wordt gebruikt om de kernel printk() buffer te controleren, de
glibc omwikkel functie voor de systeem aanroep wordt klogctl()
genoemd.
De kernel heeft een ring buffer met lengte LOG_BUF_LEN
waarin berichten die opgegeven werden als argument aan de kernel functie
printk() bewaard worden (ongeacht hun log niveau). In vroegere
kernels had LOG_BUF_LEN de waarde 4096; vanaf Linux 1.3.54 was dit
8192; vanaf Linux 2.1.113 was het 16384; en vanaf Linux 2.4.23/2.6 is deze
waarde de kernel configuratie optie (CONFIG_LOG_BUF_SHIFT, standaard
waarde is afhankelijk van de architectuur). Vanaf Linux 2.6.6, kan de
grootte worden opgevraagd met commando type 10 (zie hieronder).
Het type argument bepaald de actie die deze functie
uitvoert. De lijst hieronder bepaald de waarden van type. De
symbolische namen worden gedefinieerd in de kernel broncode, maar worden
niet geëxporteerd naar de gebruiker; u zult ofwel getallen moeten
gebruiken, of zelf de namen definiëren.
- SYSLOG_ACTION_CLOSE
(0)
- Sluit het log. Momenteel een NOP.
- SYSLOG_ACTION_OPEN
(1)
- Open het log. Momenteel een NOP.
- SYSLOG_ACTION_READ
(2)
- Lees van de log. De aanroep wacht totdat de kernel log buffer niet leeg
is, en leest vervolgens op zijn meest len bytes in de buffer
aangewezen door bufp. De aanroep retourneert het aantal gelezen
bytes. Gelezen bytes van de log verdwijnen uit de log buffer: de
informatie kan slecht eenmaal gelezen worden. Dit is de functie die
uitgevoerd wordt door de kernel wanneer een gebruikers programma leest van
proc/kmsg.
- SYSLOG_ACTION_READ_ALL
(3)
- Lees alle resterende berichten van de ring buffer, en plaats ze in een
buffer die aangewezen wordt door bufp. De aanroep leest de laatste
len bytes van de log buffer (niet destructief), maar leest niet
meer dan was geschreven in de buffer sinds het laatste "wis ring
buffer" commando (zie commando 5 hieronder). De aanroep retourneert
het aantal gelezen bytes.
- SYSLOG_ACTION_READ_CLEAR
(4)
- Lees en wis alle resterende berichten in de ring buffer. De aanroep doet
precies hetzelfde als voor een type van 3, maar voert ook het
"wis ring buffer" commando uit.
- SYSLOG_ACTION_CLEAR
(5)
- De aanroep voert alleen het "wis ring buffer" commando uit. De
bufp en len argumenten worden genegeerd.
- Dit commando wist de ring buffer niet echt. In plaats daarvan zet het een
boekhoud variabele in de kernel die de resultaten bepaald die teruggegeven
worden door de commando´s 3 3 (SYSLOG_ACTION_READ_ALL) en 4
(SYSLOG_ACTION_READ_CLEAR). Dit commando heeft geen effect op
commando´s 2 (SYSLOG_ACTION_READ) en 9
(SYSLOG_ACTION_SIZE_UNREAD).
- SYSLOG_ACTION_CONSOLE_OFF
(6)
- Het commando bewaart de huidige waarde van console_loglevel en zet
vervolgens console_loglevel op minimum_console_loglevel,
zodat er geen berichten op de console getoond worden. Voor Linux 2.6.32,
zet dit commando eenvoudig console_loglevel op
minimum_console_loglevel. Zie de discussie
over/proc/sys/kernel/printk, hieronder.
- De bufp en len argumenten worden genegeerd.
- SYSLOG_ACTION_CONSOLE_ON
(7)
- Als een voorgaand SYSLOG_ACTION_CONSOLE_OFF commando wordt
uitgevoerd, dan herstelt dit commando console_loglevel naar de
waarde die werd bewaard door dat commando. Voor Linux 2.6.32, zette die
commando eenvoudig weg console_loglevel op
default_console_loglevel. Zie de discussie over
/proc/sys/kernel/printk, hieronder.
- De bufp en len argumenten worden genegeerd.
- SYSLOG_ACTION_CONSOLE_LEVEL
(8)
- Deze aanroep zet console_loglevel op de waarde gegeven in
len, dit dient een geheel getal te zijn met een waarde tussen 1 and
8 (inclusief). De kernel dwingt stilzwijgend een minimum waarde van
minimum_console_loglevel al voor len. Zie de log
level sectie voor details. Het bufp argument wordt
genegeerd.
- SYSLOG_ACTION_SIZE_UNREAD
(9) (sinds Linux 2.4.10)
- De aanroep retourneert het aantal bytes die momenteel beschikbaar zijn om
te lezen van de kernel log buffer via het commando 2
(SYSLOG_ACTION_READ). De bufp en len argumenten
worden genegeerd.
- SYSLOG_ACTION_SIZE_BUFFER
(10) (sinds Linux 2.6.6)
- Het commando retourneert de totale grootte van de kernel log buffer. De
bufp en len argumenten worden genegeerd.
Alle commando´s behalve 3 en 10 vereisen privilege. In
Linux kernels voor 2.6.37, zijn commando types 3 en 10 toegestaan voor
niet-geprivilegieerde processen; vanaf Linux 2.6.37, worden deze
commando´s alleen toegestaan aan niet-geprivilegieerde processen als
/proc/sys/kernel/dmesg_restrict de waarde 0 heeft. Voor Linux 2.6.37,
betekende "geprivilegieerd" dat de aanroeper de
CAP_SYS_ADMIN capaciteit had. Vanaf Linux 2.6.37 betekende
"geprivilegieerd" dat de aanroeper hetzij de CAP_SYS_ADMIN
capaciteit (nu verouderd voor dit doel) of de (nieuwe) CAP_SYSLOG
capaciteit.
/proc/sys/kernel/printk is een schrijfbaar bestand dat vier
gehele getallen bevat die het kernel printk() gedrag beïnvloed
bij het tonen of loggen van fout meldingen. De vier waarden zijn:
- console_loglevel
- Alleen berichten met een log niveau lager dan deze waarden worden getoond
in de terminal. De standaard waarde voor dit veld is
DEFAULT_CONSOLE_LOGLEVEL (7), maar wordt gezet op 4 als de kernel
commando regel het woord "quiet" bevat, 10 als de kernel
commando regel het woord "debug" bevat, en op 15 in het geval
van een kernel fout (de 10 en 15 zijn een beetje gek, en equivalent aan
8). De waarde van console_loglevel kan worden gezet (op een waarde
in het bereik van 1–8) met de syslog() aanroep met een
type van 8.
- default_message_loglevel
- Deze waarde zal worden gebruikt als het log niveau voor printk()
berichten die geen expliciet niveau hebben. Tot en met Linux 2.6.38, was
de hard-gecodeerde standaard waarde voor dit veld 4 (KERN_WARNING);
vanaf Linux 2.6.39, is de standaard waarde gedefinieerd door een kernel
configuratie optie CONFIG_DEFAULT_MESSAGE_LOGLEVEL, die standaard
op 4 staat.
- minimum_console_loglevel
- De waarde in dit veld is de minimale waarde op welke
console_loglevel kan worden ingesteld.
- default_console_loglevel
- Dit is de standaard waarde van console_loglevel.
Elke printk() bericht heeft zijn eigen log niveau. Als dit
niveau niet expliciet werd gespecificeerd als onderdeel van het bericht, dan
heeft dit de standaardwaarde default_message_loglevel. De
gebruikelijke betekenis van het log niveau is als volgt:
Kernel constanten |
Niveau waarde |
Betekenis |
KERN_EMERG |
0 |
Systeem is onbruikbaar |
KERN_ALERT |
1 |
Actie moet onmiddellijk genomen worden |
KERN_CRIT |
2 |
Kritieke toestand |
KERN_ERR |
3 |
Fouttoestanden |
KERN_WARNING |
4 |
Waarschuwings toestanden |
KERN_NOTICE |
5 |
Normale maar belangwekkende toestanden |
KERN_INFO |
6 |
Informatie |
KERN_DEBUG |
7 |
Debug-niveau berichten |
De printk kernel routine zal alleen een bericht op de
console laten zien als het een log niveau heeft die kleiner is dan de waarde
van console_loglevel.
Voor type gelijk aan 2,3 of 4 retourneert een succesvolle
aanroep van syslog() het aantal gelezen bytes. Voor type 9,
retourneert syslog() het aantal momentaan beschikbare bytes die van
de kernel log buffer gelezen kunnen worden. Voor type 10, retourneert
syslog() de totale grootte van de kernel log buffer. Voor andere
waarden van type, wordt een 0 teruggegeven bij succes.
In het geval van een fout wordt -1 teruggegeven, en errno
wordt gezet om de fout te indiceren.
- EINVAL
- Ongeldig argument (b.v. fout type; of voor type 2,3, of 4,
buf is NULL, of len is kleiner dan nul; of voor type
8, het level is buiten het 1 tot 8 bereik.
- ENOSYS
- De syslog() systeem aanroep is niet beschikbaar, omdat de kernel
werd gecompileerd met de uitgeschakelde CONFIG_PRINTK
kernel-configuratie optie.
- EPERM
- Een poging werd gedaan om console_loglevel te veranderen of de kernel
berichten ring buffer te wissen door een proces zonder voldoende privilege
(preciezer: zonder de CAP_SYS_ADMIN of CAP_SYSLOG
capaciteit).
- ERESTARTSYS
- Systeem aanroep werd onderbroken door een signaal; - niets werd gelezen.
(Dit kan alleen worden gezien gedurende een trace.)
Deze functie is Linux-specifiek, en zou niet gebruikt moeten
worden in programma's die als overdraagbaar bedoeld zijn.
Vanaf het begin merkten mensen op dat het ongelukkig was dat een
systeem aanroep en een bibliotheek routine met dezelfde naam erg
verschillende beesten zijn.
De Nederlandse vertaling van deze handleiding is geschreven door
Jos Boersema <joshb@xs4all.nl>, Mario Blättermann
<mario.blaettermann@gmail.com> en Luc Castermans
<luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de
GNU General
Public License Version 3 of later over de Copyright-voorwaarden. Er is
geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden,
stuur een e-mail naar
debian-l10n-dutch@lists.debian.org.