Linux-logger-Befehl
logger ist ein einfaches, aber leistungsstarkes Befehlszeilenwerkzeug unter Linux, mit dem Protokolleinträge zum Systemprotokoll (syslog) hinzugefügt werden. Es ermöglicht Benutzern und Skriptprogrammen, benutzerdefinierte Nachrichten in Systemprotokolldateien zu schreiben, was es zu einem wichtigen Werkzeug für Systemadministration und Fehlerbehebung macht.
Typische Anwendungsfälle:
- Wichtige Vorgänge während der Skriptausführung aufzeichnen
- Den Status von Systemwartungsaufgaben verfolgen
- Protokolleinträge für benutzerdefinierte Anwendungen
- Remote-Protokollierung (mit einem syslog-Server)
Grundlegende Syntax und Parameter
Die grundlegende Syntax des logger-Befehls lautet wie folgt:
logger [选项] [消息]
Häufige Optionsparameter
| Option | Beschreibung |
|---|---|
-p, --priority <优先级> |
Protokollpriorität angeben (facility.level) |
-t, --tag <标签> |
Protokolleinträge mit einer angegebenen Kennzeichnung versehen |
-i, --id |
Prozess-ID in jede Logzeile aufnehmen |
-f, --file <文件> |
Log-Inhalt aus einer angegebenen Datei lesen |
-s, --stderr |
Logs zusätzlich auf Standardfehler ausgeben |
-n, --server <主机> |
Logs an einen entfernten Syslog-Server senden |
-P, --port <端口> |
Den Port des entfernten Syslog-Servers angeben |
-u, --socket <套接字> |
Einen Unix-Domain-Socket anstelle des Standardgeräts angeben |
-d, --udp |
Logs über das UDP-Protokoll senden (Standard) |
-T, --tcp |
Logs über das TCP-Protokoll senden |
-h, --help |
Hilfeinformationen anzeigen |
-V, --version |
Versionsinformationen anzeigen |
Priorität im Detail erklärt
Die Log-Priorität besteht aus zwei Teilen: Facility und Level, formatiert alsfacility.level。
Facility-Typen
| Facility-Code | Beschreibung |
|---|---|
| auth | Sicherheits-/Autorisierungsmeldungen |
| authpriv | Private Autorisierungsmeldungen |
| cron | Cron-Daemon |
| daemon | System-Daemon |
| kern | Kernel-Meldungen |
| lpr | Drucksystem |
| Mail-System | |
| news | News-System |
| syslog | Interne Meldungen von syslogd |
| user | Meldungen auf Benutzerebene (Standard) |
| local0-7 | Benutzerdefinierte lokale Nutzung |
Protokollstufen
| Stufencode | Beschreibung | Wert |
|---|---|---|
| emerg | System ist unbrauchbar | 0 |
| alert | Es muss sofort gehandelt werden | 1 |
| crit | Kritische Zustände | 2 |
| err | Fehlerzustände | 3 |
| warning | Warnbedingungen | 4 |
| notice | Normale, aber signifikante Bedingungen | 5 |
| Info | Informationsmeldungen | 6 |
| debug | Debug-Level-Meldungen | 7 |
Praktische Beispiele
Grundlegende Anwendungsbeispiele
-
Einfache Protokollierung:
logger "系统备份任务开始执行"
Dadurch wird eine Nachricht im Systemprotokoll aufgezeichnet, standardmäßig mit der Priorität user.notice.
-
Mit einem Tag protokollieren:
logger -t BACKUP "数据库备份完成"
Der Protokolleintrag wird wie folgt angezeigt:
BACKUP: 数据库备份完成 -
Priorität angeben:
logger -p local0.notice "自定义应用程序启动"
Erweiterte Anwendungsbeispiele
-
Protokollinhalt aus einer Datei lesen:
logger -f /var/log/myapp.log
-
Skriptausführungsstatus aufzeichnen:
#!/bin/bash logger -t SCRIPT -p user.info "脚本开始执行" # 执行任务... if [ $? -eq 0 ]; then logger -t SCRIPT -p user.info "任务执行成功" else logger -t SCRIPT -p user.err "任务执行失败" fi -
Remote-Logaufzeichnung:
logger -n 192.168.1.100 -P 514 "发送到远程服务器的日志"
-
Gleichzeitige Ausgabe im Terminal und im Log:
logger -s "这条消息会同时出现在终端和日志中"
Anzeigen und Verwalten von Logs
Nach der Aufzeichnung von Logs können Sie die folgenden Befehle verwenden, um sie anzuzeigen:
-
Systemlogs anzeigen:
journalctl # Systeme mit systemd oder tail -f /var/log/syslog # traditionelle Systeme -
Logs nach einem bestimmten Tag filtern:
journalctl -t BACKUP
-
Logs nach Zeit anzeigen:
journalctl --since "2023-01-01" --until "2023-01-02"
Best Practices und Vorsichtsmaßnahmen
-
Konventionen für Log-Tags:
- Verwenden Sie aussagekräftige Tags (z. B. Anwendungsname oder Skriptname)
- Halten Sie Tags konsistent, um später einfacher filtern und analysieren zu können
-
Prioritätsauswahl:
- Log-Level angemessen verwenden; vermeiden, für Logs dasselbe Log-Level zu verwenden
- Für kritische Logs Warnung oder höher verwenden
-
Vorschläge für Log-Inhalte:
- Ausreichende Informationen aufnehmen
- Sensible Daten (wie Passwörter) nicht aufzeichnen
- Logs prägnant, aber vollständig halten
-
Leistungsüberlegungen:
- Starkes Logging kann die Leistung beeinträchtigen
- Erwägen Sie gepufferte oder andere Methoden für das Logging großer Mengen
-
Log-Rotation:
- Alte Logs regelmäßig aufräumen
- logrotate konfigurieren, um Logdateigrößen zu verwalten
FAQ
F1: Warum erscheint mein Protokoll nicht in /var/log/syslog?
A1: Dies kann folgende Ursachen haben:
- Die von Ihnen verwendete Facility ist so konfiguriert, dass sie in eine andere Datei schreibt
- Der Log-Level ist niedriger als die systemseitig konfigurierte minimale Aufzeichnungsstufe
- Das System verwendet journald anstelle des traditionellen syslog
F2: Wie finde ich heraus, welches Protokollierungssystem mein System verwendet?
A2: Führen Sie den folgenden Befehl aus, um dies zu prüfen:
ps aux | grep -E "syslog|journald"
F3: Kann ich mehrere Optionen gleichzeitig verwenden?
A3: Ja, zum Beispiel:
logger -t MYAPP -p local0.err -i "关键错误发生"
F4: Wie teste ich die Konfiguration des Remote-Log-Servers?
A4: Verwenden Sie logger, um eine Testnachricht zu senden:
logger -n 远程服务器IP -P 端口 "测试消息"
In diesem Artikel sollten Sie die grundlegende Verwendung des Befehls logger gemeistert haben. Dieses scheinbar einfache Werkzeug ist in der praktischen Systemadministration und Anwendungsentwicklung sehr nützlich und hilft Ihnen, einen vollständigen Protokollierungsmechanismus aufzubauen. Es wird empfohlen, in Ihrer praktischen Arbeit mehr zu üben und die verschiedenen Optionsparameter je nach den konkreten Anforderungen flexibel einzusetzen.
Andere Erweiterungen
Linux-Befehlsreferenz