Rsyslog-Ausgabe in eine benutzerdefinierte Protokolldatei

13

Kann mir jemand sagen, was ich hier falsch gemacht habe?

Hier ist die ultimative Frage:

Warum kann ich den Befehl logger nicht in eine benutzerdefinierte Protokolldatei ausgeben lassen /var/log?

In meinem Drehbuch:

logger -i -t ANM -p local7.info "This is a local 7 test"

Im rsyslog.confFolgenden habe ich an das Ende der Datei Folgendes angehängt:

local7.* /var/log/anm.log

Das Skript hat auch die Berechtigung für die /var/log/anm.logDatei

* UPDATE *

Also habe ich vergessen, die Protokollierungsdienste neu zu starten. Ich habe versucht, neu zu starten und " service rsyslog restart" noch keine Änderung. Der Testtext wird nicht in /var/log/anm.logangezeigt, aber in/var/log/syslog

* UPDATE *

Welche Berechtigungen sind /var/log/"yourlogfilehere"erforderlich? Owner, Group, rwx?

Ich habe versucht, grp und own auf root und auf den Benutzernamen einzustellen, unter dem der Logger-Befehl ausgeführt wird. Keine Änderung mit.

Ich habe auch versucht, Protokolldateien in einem benutzerdefinierten Verzeichnis zu erstellen /var/log. dh /var/log/anm/anm.logund Festlegen beider Arten von Berechtigungen für das Verzeichnis.

* UPDATE *

rsyslogd läuft

syslog     598  0.0  0.1  31060  1292 ?        Sl   03:02   0:02 rsyslogd -c5

und hier ist die Ausgabe aus meiner /etc/rsyslog.confDatei

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

local7.*        /var/log/anm.log

Ich habe auch versucht, es einzubauen /etc/rsyslog.d/50-default.conf(ich verwende Ubuntu 12.04 LTS)

#  Default rules for rsyslog.
#
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
kern.*                          -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log
#user.*                         -/var/log/user.log
local7.*                        /var/log/anm.log

* UPDATE *

Nun, ich habe es endlich herausgefunden. Ich wünschte, jemand hätte das für mich beantwortet. Es hat einige Tage gedauert, um herauszufinden, was los war, aber ich glaube, es gibt nicht sehr viele Leute, die Superuser haben.

Das Problem war mit den Dateiberechtigungen der benutzerdefinierten Protokolldatei, wie ich ursprünglich vermutet hatte. Ich dachte, ich hätte die richtigen Berechtigungen, aber es stellt sich heraus, dass der Besitzer syslogund die Gruppe sein müssen adm. Ich habe dies durch einen Vergleich mit der user.logDatei festgestellt . Sobald die Berechtigungen geändert und erneut getestet wurden, funktioniert alles einwandfrei! Ich hoffe, das hilft jemand anderem da draußen schneller, als ich eine Antwort finden konnte.

Atomiklan
quelle
1
Ich habe einen identischen Post auf SF gesehen - bitte nicht kreuzen.
Geselle Geek
Alle sagten mir, ich solle meinen Posten verschieben. Ich denke, ich sollte die anderen löschen?
Atomiklan
1
Jep. Sie können auch Ihre eigenen Beiträge kennzeichnen, um einen Moderator zu bitten, diese auch in Zukunft zu verschieben
Journeyman Geek
"Bitte, brauche sofortige Hilfe" ist auch kein sehr hilfreicher Titel für die Frage. Ich finde Ihre Frage auch persönlich schwer lesbar. wo ist die eigentliche frage Die einzige echte Frage, die ich sehen kann, ist "Welche Berechtigungen braucht / var / log / somefile?" und die Antwort darauf sollte lauten "lass das syslogd damit umgehen". Das war übrigens schon viele Updates her und damit vermutlich nicht mehr relevant.
ein Lebenslauf vom
Sie können Ihre Lösung als Antwort veröffentlichen, damit andere Personen, die mit demselben Problem konfrontiert sind, sie sehen können.
Gronostaj

Antworten:

6

Nun, ich habe es endlich herausgefunden. Ich wünschte, jemand hätte das für mich beantwortet. Es hat einige Tage gedauert, um herauszufinden, was los war, aber ich glaube, es gibt nicht sehr viele Leute, die Superuser haben.

Das Problem war mit den Dateiberechtigungen der benutzerdefinierten Protokolldatei, wie ich ursprünglich vermutet hatte. Ich dachte, ich hätte die richtigen Berechtigungen, aber es stellt sich heraus, dass der Besitzer "syslog" und die Gruppe "adm" sein muss. Ich habe dies durch einen Vergleich mit der Datei user.log festgestellt. Sobald die Berechtigungen geändert und erneut getestet wurden, funktioniert alles einwandfrei! Ich hoffe, das hilft jemand anderem da draußen schneller, als ich eine Antwort finden konnte.

Hier sind die endgültigen Berechtigungen

-rw-r--r-- 1 syslog adm 0 Aug  3 05:09 anm.log
Atomiklan
quelle
"Ich dachte, ich hätte die richtigen Berechtigungen" impliziert, dass Sie die Datei selbst erstellt haben. Warum haben Sie es nicht einfach vom Syslog-Daemon erstellen lassen?
ein Lebenslauf
Die Frage lautete: Warum kann ich den Befehl logger bei Verwendung nicht in eine benutzerdefinierte Protokolldatei in / var / log ausgeben lassen? Ich habe gerade versucht, Syslog die Datei erstellen zu lassen, und ich arbeite nicht. In beiden Fällen ist es jedoch in Ordnung. Es macht mir nichts aus, wenn mein Installationsskript die Datei erstellt und die Berechtigungen festlegt.
Atomiklan
1
Fühlt sich wie es, wenn Sekunden = $$$
Atomiklan
Hallo @Atomiklan Danke für deine Frage löst mein genau gleiches Problem. Allerdings frage ich mich, warum die von rsyslog automatisch erstellte Datei unter root / root steht und nicht unter syslog / adm? Hast du eine Idee warum?
Yudong Li
Danke, Mann! Anscheinend hat mich Ihre Anstrengung gerade von 2 Tagen des Debuggens von Syslog gerettet :) Und aus den vagen Kommentaren von @ MichaelKjörling und @ YudongLi habe ich herausgefunden, dass der Dämon die Datei selbständig gemäß dem Pfad in der Konfigurationsregel erstellt. Nachdem service restartes die Regel kennt und beim ersten entsprechenden Aufruf aus loggerdie Datei mit den richtigen Berechtigungen erstellt hat.
Xealits
1

@Atomiklan erwähnte, dass er den Besitzer / die Gruppe seiner benutzerdefinierten Datei in syslog / adm ändern musste. Ich habe es versucht und es hat funktioniert ...

Aber der Kommentar von @ MichaelKjörling schien auch richtig zu sein: Warum nicht einfach den Syslog-Daemon die Datei erstellen lassen?

Der Schlüssel in meinem Fall (und ich schlage die OPs vor) ist, dass der Syslog-Benutzer keine Schreibberechtigung für das Verzeichnis meines benutzerdefinierten Protokolls hatte . Ich habe ein chmod o+wrsyslog neu gestartet und meine Protokolldatei ist glücklich dort erschienen, wo sie sein sollte ... mit syslog / adm als Benutzer / Gruppe.

Dan H
quelle
1
#$ModLoad imudp
#$UDPServerRun 514

muss sein:

$ModLoad imudp
$UDPServerRun 514

Remote-Protokollierung ausführen!

rsyslog
quelle