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;
}
/etc/
, die Sie für Ihre Kennung ("test"
in Ihrem Fall) und Ihre Einrichtung ändern müssen .Antworten:
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
rsyslog
Dienst gesteuert. Wenn dies aus irgendeinem Grund deaktiviert ist, müssen Sie möglicherweise damit beginnensystemctl start rsyslog
.Wie von anderen angemerkt, wird Ihre
syslog()
Ausgabe von der/var/log/syslog
Datei protokolliert .Sie können System-, Benutzer- und andere Protokolle unter anzeigen
/var/log
.Für weitere Details: Hier ist ein interessanter Link .
quelle
/var/log/syslog
eine echte Vorgabe ist. Vielleicht konfiguriert Ubuntu das selbst.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
Wenn Sie also ausführen, erhalten
man 3 syslog
Sie eine vollständige Handbuchseite für diesyslog
Funktion, 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.
quelle
Standardprotokollspeicherort (rhel) sind
Allgemeine Meldungen:
/var/log/messages
Authentifizierungsnachrichten:
/var/log/secure
Mail-Ereignisse:
/var/log/maillog
Überprüfen Sie Ihr
/etc/syslog.conf
oder/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
quelle
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.conf
Datei konfiguriert. Starten Sie dann rsyslog neu, um die neue Konfiguration zu laden. Die Standardprotokollierungsregeln befinden sich normalerweise in einer/etc/rsyslog.d/50-default.conf
Datei.quelle
syslog () generiert eine Protokollnachricht, die von syslogd verteilt wird.
Die Datei zum Konfigurieren von syslogd lautet /etc/syslog.conf. In dieser Datei erfahren Sie, wo die Nachrichten protokolliert werden.
Wie ändere ich die Optionen in dieser Datei? Hier gehen Sie http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html
quelle
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öglicherweisedmesg
für Kernel-Protokolle aus).quelle
Ich verwende Ubuntu unter WSL (Windows Subsystem für Linux) und
systemctl start rsyslog
habe bei mir nicht funktioniert.Also, was ich getan habe, ist Folgendes:
Jetzt
syslog
erscheint die Datei unter/var/log/
quelle