Wie überprüfe ich Syslog in Bash unter Linux?

89

In C protokollieren wir folgendermaßen:

syslog( LOG_INFO, "proxying %s", url );

Wie können wir unter Linux das Protokoll überprüfen?

Kern
quelle
Nicht die Funktion syslog Schreib in das Systemprotokoll? (Es sei denn, Sie sprechen über die untergeordnete Ebene für den Zugriff auf den Kernel-Nachrichtenringpuffer, aber ich bezweifle, dass dies urleine ist int.)
Cascabel
2
Dieses Q sollte auf unix.SE.com migriert werden, nicht sicher, ob es sich lohnt, es für die Aufmerksamkeit des Mods zu markieren (ich habe es markiert).
Alexander Malakhov

Antworten:

131

Wie wäre es less /var/log/syslog?

NPE
quelle
1
@kern: Welche Linux Distribution und Version benutzt du?
NPE
6
@kern: Überprüfen Sie den Inhalt Ihrer/etc/syslog.conf
NPE
26
tail -f /var/log/syslogist wirklich schön, weil es die neueste Ausgabe zeigt, wenn es in das Syslog geht. Dies kann nützlich sein, wenn Sie versuchen, Probleme live zu beheben, anstatt sich etwas anzusehen, das ausschließlich in der Vergangenheit liegt.
counterbeing
19
Es ist eigentlich /etc/rsyslog.conf für CentOs
Roman Goyenko
1
@ArunprasadRajkumar Der andere Weg wäre zu vermeiden, Nachrichten zu protokollieren, die von normalen Benutzern in Syslog gelesen werden sollen
Dmitry Grigoryev
41

Auf Fedora 19 scheint die Antwort zu sein /var/log/messages. Überprüfen /etc/rsyslog.confSie jedoch , ob es geändert wurde.

Hackonteur
quelle
Ich habe es auf openSUSE überprüft und festgestellt, dass es auch für es gilt. Danke für das Teilen!
Silvioprog
24

Standardmäßig ist es im Systemprotokoll unter angemeldet /var/log/syslog, sodass es gelesen werden kann von:

tail -f /var/log/syslog

Wenn die Datei nicht vorhanden ist, überprüfen Sie, ob /etc/syslog.confdie Konfigurationsdatei für syslogd angezeigt wird. Beachten Sie, dass die Konfigurationsdatei unterschiedlich sein kann. Überprüfen Sie daher den laufenden Prozess, wenn eine andere Datei verwendet wird:

# ps wuax | grep syslog
root      /sbin/syslogd -f /etc/syslog-knoppix.conf

Hinweis: In einigen Distributionen (z. B. Knoppix) können alle protokollierten Nachrichten an ein anderes Terminal gesendet werden (z. B. /dev/tty12). Um darauf zuzugreifen tty12, drücken Sie z. B. Control+ Alt+ F12.

Sie können auch das lsofTool verwenden, um herauszufinden, welche Protokolldatei der syslogdProzess verwendet, z

sudo lsof -p $(pgrep syslog) | grep log$ 

Um die Testnachricht an syslogd in der Shell zu senden, können Sie Folgendes versuchen:

echo test | logger

Verwenden Sie zur Fehlerbehebung ein Trace-Tool ( straceunter Linux, dtrussunter Unix), z.

sudo strace -fp $(cat /var/run/syslogd.pid)
Kenorb
quelle
22

Ein sehr cooler Util ist journalctl.

Zum Beispiel, um Syslog der Konsole anzuzeigen: journalctl -t <syslog-ident>Wo <syslog-ident>ist die Identität, die Sie der Funktion openlogzum Initialisieren von Syslog gegeben haben?

nhnghia
quelle
14

tail -f /var/log/syslog | grep process_name Wo process_nameist der Name des Prozesses, an dem wir interessiert sind?

kshiteejm
quelle
3

Wenn Sie Vim mögen, verfügt es über eine integrierte Syntaxhervorhebung für die Syslog-Datei, z. B. werden Fehlermeldungen rot hervorgehoben.

vi +'syntax on' /var/log/syslog
Andy Carlson
quelle
-12

auf dem Asus-Router könnte dies über erfolgen

:/bin# busybox

Es gibt auch andere Befehle im Zusammenhang mit.

NiceTIP
quelle
Dies ist völlig unangebracht, bitte entfernen Sie es aus den Antworten.
Jackie Yeh