Wie kann ich mit dem Logger-Befehl in eine bestimmte Datei in Linux einloggen?

9

Ich werde das folgende Skript ausführen:

%Vor%

Aber ich möchte nicht, dass Log-Nachrichten in /var/log/messages geschrieben werden, weil ich keine Root-Rechte habe. Stattdessen möchte ich, dass es in eine Datei in meinem Home-Verzeichnis geschrieben wird: /home/myuser/mylog

Wie soll ich den Befehl logger oben ändern?

    
alwbtc 16.11.2012, 19:40
quelle

5 Antworten

8

Ich glaube nicht, dass Sie logger / syslog dafür wirklich einbinden müssen (oder wollen). Ersetzen Sie einfach die letzte Zeile des Skripts durch:

%Vor%     
twalberg 16.11.2012 20:08
quelle
4

Ich denke, Ihre bessere Wahl wäre, den Befehl date anstelle von logger zu verwenden, wenn Sie nicht in die syslog-Dateien schreiben möchten (und keine privativen Zugriffsrechte haben).

Siehe " Zeitstempel vor einem Echo " für Details zur Verwendung von date , um eine Nachricht mit einem Datum zu versehen und in eine Datei zu schreiben.

Sie erstellen eine Bash-Funktion, die wie folgt aussieht, indem Sie die% format-Zeichenfolge% co_de so anpassen, dass Sie das gewünschte Ergebnis erhalten:

%Vor%

In Ihrem Bash-Skript würden Sie dann verwenden:

%Vor%

Was würde folgendes in Ihre date Datei schreiben:

%Vor%     
tgharold 11.03.2014 12:42
quelle
3
%Vor%
  

Logger stellt dem Systemprotokollmodul syslog (3) eine Shell-Befehlsschnittstelle zur Verfügung.

Sie müssen Ihre Syslog-Konfiguration ändern, wenn Sie möchten, dass Dinge an anderen Orten protokolliert werden. Sie könnten zum Beispiel eine bestimmte Einrichtung einrichten, die eine Ausgabedatei in Ihrem Home-Verzeichnis hat. Dafür müsstest du root sein.

    
Jeff Ferland 16.11.2012 19:49
quelle
2

Wenn Sie logger verwenden möchten, sodass die Nachricht sowohl in den Systemprotokollen als auch in einer Ihrer Dateien erscheint, tun Sie dies möglicherweise

%Vor%

da die Option -s auf logger auch auf stderr ausgegeben wird, die in die Datei mit 2>

umgeleitet wird     
Basile Starynkevitch 16.11.2012 20:39
quelle
1

Leider können Sie nicht.

Der Befehl logger ist nur ein dünnes Frontend für den Systemlogger. Dies bedeutet, dass alles, was Sie ihm zuführen, direkt zu syslogd geht, was dann alle Arten der Verarbeitung (wie Hinzufügen von Zeitstempel, Hostname, Priorität, Tag usw.) sowie komplexes Dispatching zu verschiedenen Outlets (verschiedene Dateien, Sockets, andere Server etc.).

Es überbrückt sogar Berechtigungsstufen. In Ihrem Beispiel könnten Sie also zum Beispiel problemlos in syslog oder user.log loggen, obwohl Sie diese Dateien nicht direkt ändern können.

Wenn logger direkt in einer Datei protokolliert werden könnte, wäre es entweder so dumm wie ein einfacher Echo-Einzeiler oder müsste viele der von syslog ausgeführten Nachrichtenverarbeitungsaufgaben neu implementieren. Wie auch immer, das wäre eine schlechte Idee.

Es wäre viel besser, wenn die Standard-Syslog-Schnittstelle eine Möglichkeit hätte, einen Ad-hoc-Ausgangsparameter (wie einen Dateinamen) zusammen mit der Nachricht anzugeben, so dass man sich an benutzerdefinierten Dateien anmelden kann, ohne das System neu konfigurieren zu müssen (was normale Benutzer haben) keine Erlaubnis zu tun).

    
Sz. 14.01.2017 14:41
quelle

Tags und Links