syslog(2) System Calls Manual syslog(2)

syslog - lees en/of wis kernel bericht-ring-buffer; zet "console_loglevel"

Standard C library (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 size);
/* Het glibc interface */
#include <sys/klog.h>
int klogctl(int type, char *bufp, int size);

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.

The kernel has a cyclic buffer of size LOG_BUF_LEN in which messages given as arguments to the kernel function printk() are stored (regardless of their log level). In early kernels, LOG_BUF_LEN had the value 4096; from Linux 1.3.54, it was 8192; from Linux 2.1.113, it was 16384; since Linux 2.4.23/2.6, the value is a kernel configuration option (CONFIG_LOG_BUF_SHIFT, default value dependent on the architecture). Since Linux 2.6.6, the size can be queried with command type 10 (see below).

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.

Sluit het log. Momenteel een NOP.
Open het log. Momenteel een NOP.
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.
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.
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.
The call executes just the "clear ring buffer" command. The bufp and size arguments are ignored.
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).
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.
The bufp and size arguments are ignored.
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.
The bufp and size arguments are ignored.
The call sets console_loglevel to the value given in size, which must be an integer between 1 and 8 (inclusive). The kernel silently enforces a minimum value of minimum_console_loglevel for size. See the log level section for details. The bufp argument is ignored.
The call returns the number of bytes currently available to be read from the kernel log buffer via command 2 (SYSLOG_ACTION_READ). The bufp and size arguments are ignored.
This command returns the total size of the kernel log buffer. The bufp and size arguments are ignored.

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:

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.
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.
De waarde in dit veld is de minimale waarde op welke console_loglevel kan worden ingesteld.
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.

Bad arguments (e.g., bad type; or for type 2, 3, or 4, buf is NULL, or size is less than zero; or for type 8, the level is outside the range 1 to 8).
De syslog() systeem aanroep is niet beschikbaar, omdat de kernel werd gecompileerd met de uitgeschakelde CONFIG_PRINTK kernel-configuratie optie.
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).
Systeem aanroep werd onderbroken door een signaal; - niets werd gelezen. (Dit kan alleen worden gezien gedurende een trace.)

Linux.

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.

dmesg(1), syslog(3), capabilities(7)

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.

17 november 2024 Linux man-pagina's 6.12