Wo speichert Linux mein Syslog?


81

Ich habe eine einfache Testanwendung geschrieben, um etwas in einer Protokolldatei zu protokollieren. Ich verwende Linux Mint und versuche nach der Ausführung der Anwendung, das Protokoll mit diesem Befehl anzuzeigen:

tail -n 100 /var/log/messages

aber die dateimeldungen existieren weder getestet noch so. Unten finden Sie meinen Code. Vielleicht mache ich etwas falsch, die Datei wird dort nicht gespeichert oder ich muss die Anmeldung bei Linux Mint aktivieren.

#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>

void init_log()
{
    setlogmask(LOG_UPTO(LOG_NOTICE));
    openlog("testd",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
}

int main(void) {

    init_log();
    printf("Session started!");
    syslog(LOG_NOTICE, "Session started!!");
    closelog();

    return EXIT_SUCCESS;
}

Dies hängt vom verwendeten Systemlogger ab. Es sollte irgendwo eine Konfigurationsdatei enthalten sein /etc/, die Sie für Ihre Kennung ( "test"in Ihrem Fall) und Ihre Einrichtung ändern müssen .
Einige Programmierer Typ

Antworten:


79

Auf meinem Ubuntu-Computer kann ich die Ausgabe unter sehen /var/log/syslog.

Auf einem RHEL / CentOS-Computer befindet sich die Ausgabe in /var/log/messages.

Dies wird vom rsyslogDienst gesteuert. Wenn dies aus irgendeinem Grund deaktiviert ist, müssen Sie möglicherweise damit beginnen systemctl start rsyslog.

Wie von anderen angemerkt, wird Ihre syslog()Ausgabe von der /var/log/syslogDatei protokolliert .
Sie können System-, Benutzer- und andere Protokolle unter anzeigen /var/log.

Für weitere Details: Hier ist ein interessanter Link .



1
Es scheint nicht, dass dies /var/log/syslogeine echte Vorgabe ist. Vielleicht konfiguriert Ubuntu das selbst.
Kevr

24

Zusätzlich zur akzeptierten Antwort ist es nützlich, Folgendes zu wissen ...

Jeder dieser Funktionen sollten Handbuchseiten zugeordnet sein.

Wenn Sie man -k syslog(eine Stichwortsuche in Manpages) ausführen, erhalten Sie eine Liste von Manpages, die auf Syslog verweisen oder sich mit Syslog befassen

$ man -k syslog
logger (1)           - a shell command interface to the syslog(3) system l...
rsyslog.conf (5)     - rsyslogd(8) configuration file
rsyslogd (8)         - reliable and extended syslogd
syslog (2)           - read and/or clear kernel message ring buffer; set c...
syslog (3)           - send messages to the system logger
vsyslog (3)          - send messages to the system logger

Sie müssen die manuellen Abschnitte verstehen, um weiter zu vertiefen.

Hier ist ein Auszug aus der Manpage für Man, der die Manpage-Abschnitte erklärt:

The table below shows the section numbers of the manual followed  by
the types of pages they contain.

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages and conven‐
       tions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

Um den obigen Lauf zu lesen

$man man 

Wenn Sie also ausführen, erhalten man 3 syslogSie eine vollständige Handbuchseite für die syslogFunktion, die Sie in Ihrem Code aufgerufen haben.

SYSLOG(3)                Linux Programmer's Manual                SYSLOG(3)

NAME
   closelog,  openlog,  syslog,  vsyslog  - send messages to the system
   logger

SYNOPSIS
   #include <syslog.h>

   void openlog(const char *ident, int option, int facility);
   void syslog(int priority, const char *format, ...);
   void closelog(void);

   #include <stdarg.h>

   void vsyslog(int priority, const char *format, va_list ap);

Keine direkte Antwort, aber hoffentlich finden Sie dies nützlich.


22

Standardprotokollspeicherort (rhel) sind

Allgemeine Meldungen:

/var/log/messages

Authentifizierungsnachrichten:

/var/log/secure

Mail-Ereignisse:

/var/log/maillog

Überprüfen Sie Ihr /etc/syslog.confoder /etc/syslog-ng.conf(es hängt davon ab, welche Syslog-Funktion Sie installiert haben).

Beispiel:

$ cat /etc/syslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none         /var/log/messages

# The authpriv file has restricted access.
authpriv.*                             /var/log/secure

# Log all the mail messages in one place.
mail.*                                 /var/log/maillog

#For a start, use this simplified approach.
*.*                                     /var/log/messages

9

Sie müssen dem System mitteilen, welche Informationen protokolliert werden sollen und wo die Informationen abgelegt werden sollen. Die Protokollierung wird in der /etc/rsyslog.confDatei konfiguriert. Starten Sie dann rsyslog neu, um die neue Konfiguration zu laden. Die Standardprotokollierungsregeln befinden sich normalerweise in einer /etc/rsyslog.d/50-default.confDatei.



4

Die Protokollierung ist unter Linux sehr konfigurierbar, und Sie möchten möglicherweise einen Blick auf Ihre /etc/syslog.conf(oder vielleicht unter /etc/rsyslog.d/) werfen . Details hängen vom Protokollierungssubsystem und der Verteilung ab.

Schauen Sie sich auch die Dateien unter an /var/log/(und führen Sie sie möglicherweise dmesgfür Kernel-Protokolle aus).


0

Ich verwende Ubuntu unter WSL (Windows Subsystem für Linux) und systemctl start rsysloghabe bei mir nicht funktioniert.

Also, was ich getan habe, ist Folgendes:

$ service rsyslog start

Jetzt syslogerscheint die Datei unter/var/log/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.