Hallo Leute,
in einem gesunden Linux system sollten der syslog eigentlich nur zentrale Informationen enthalten, und nach Möglichkeit nicht mit Anwendungsinformationen überschüttet werden. Ich schaue zum Beispiel als erstes mitail -f /var/log/syslog auf den Zustand eines Systems und erwarte nur wenige Zeilen zu sehen. Werden in jeder Sekunde Hundertee ausgeworfen, benötigt man eben Tools um dieses zu Filtern.
Beim yavdr 0.4 Standardsetup ist das oft nicht der Fall, zu viele Informationen insbesondere von vdr Komponenten machen die Nutzung etwas schwer. Insbesondere XVDR ist geschwätzig schreibt viele Informationen, zum Beispiel beim EInlesen von Hunderten von VDR Aufnahmen von verschiedenen Geräten einen Sturm von Mitteilungen, daß die Aufnahmen sich geändert haben (und ich weiß noch nicht, ob man das ohne Code Änderungen bändigen kann)
Um das ganze mal systematisch anzugehnd zu bändigen habe ich angefangen die VDR Moittzu separieren. Der vdr selbst hat ja die Möglichkeit, via -l oder --log= die syslog seperat zu halten. Ich habe daher mal versucht, das setup meines 1.6 basierten VDR auf yavdr zu übertragen, habe aber da ein paar Probleme. Ich bin noch am analysieren, wie der Startvorgang genau läuft, könnte daher Hilfestellung von den "Wissenden" oder den Implementierern gebrauchen.
Ein erster Schritt, der vielleicht auch zukünftig in den Standard übernommen werden könnte, würde in einem eigen LOGUSER Kanal bestehen. Dazu müsste nur eine Datei z.B. /etc/rsyslog.d/30-vdr.conf mit Inhalt
angelegt werden und mit reload rsylogd der syslog daemon neu gestartet werden. Dann würde automatisch alles, was an log Kanal 6 geschrieben würde, aus dem syslog stream entfernt und in die /var/log/vdr/vdr.log geschrieben werden. Eigentlich ist dafür die vdr option -l oder --log= zuständig und theoretisch sollte als z.B. eine Erweiterung des OPTIONS Eintrages in /etc/default/vdr ausreichen:
Die erste Zahl vor dem "." ist der Level, die zweite nach dem Punkt der Kanal
Leider führt das - vermutlich wegen vom mit dem Upstart Skript aufgerufenen Funktionen - beim yaVDR 04 zu einer effektiven Kommandozeile
, d.h. der Punkt wurde - wahrscheinlich durch ein SED Skript beim Aufbauen der Commandline - entfernt. Und das bedeutet, daß nur der Log-Level spezifiziert wird.
Ich habe versucht, dem /etc/init/vdr.conf zu folgen und vermutete, daß letztlich die letzte Zeile den vdr startet.
Daher habe ich probeweise die auf
exec $DAEMON --log=2.6 --lirc=$LIRC -v $VIDEO_DIR -c $CFG_DIR -L $PLUGIN_DIR -r $REC_CMD -s $VDRSHUTDOWN -E $EPG_FILE -u $USER -g /tmp --port $SVDRP_PORT $OPTIONS "${PLUGINS[@]}" $REDIRECT &> /tmp/vdr.log
end script
, aber auch dort wurde der Punkt gefressen, egal of ich den mit --log="2.6" oder --log=2\.6 zu schützen versuche.
In ps und in cat /proc/<pid_of_vdr/cmdline| tr "\0" "\n" sieht man die Verfälschung der log option.
Das exec ist es nicht, denn ein exec vi -- --log=2.6 führt zum editieren einer Datei namens "--log=2.6", d.h. exec filtert nicht.
Bleibt nur der initctl Mechanismus (restart ist z:b: nur ein Symlink auf initctl). Hat jemand eine Idee wie das zu bändigen ist?