Logging in extra Datei
-
-
Ist das hier richtig
Ja.
oder gibt es einen extra "VDR-Weg"?
Speziell für den VDR ist es sinnig auch noch stdout und stderr zu loggen. Dann bekommt man den output der Scripte die vom VDR gestartet werden.
Und wie sieht das bei syslog-ng aus?
Da wird das sicher auch gehen, einfach mal die Anleitung lesen.
cu
-
Speziell für den VDR ist es sinnig auch noch stdout und stderr zu loggen. Dann bekommt man den output der Scripte die vom VDR gestartet werden.
Hast Du das schon mal gemacht? -
Hast Du das schon mal gemacht?Ich hatte irgendwie extreme Probleme damit die auf der Shell umzuleiten. Ich habe dann einfach den VDR gepatcht so das er direkt in die Logdateien schreibt. Der Vorteil ist halt das man den Output der ganzen Systemaufrufe sieht und damit Fehlern viel schneller auf die Spur kommt. Das sieht in vdr.c so aus:
Code
Alles anzeigenif (DaemonMode) { if (daemon(1, 0) == -1) { fprintf(stderr, "vdr: %m\n"); esyslog("ERROR: %m"); return 2; } } else if (Terminal) { // Claim new controlling terminal time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); stdin = freopen(Terminal, "r", stdin); stdout = freopen("/var/log/vdr/vdr.stdout", "w", stdout); stderr = freopen("/var/log/vdr/vdr.stderr", "w", stderr); HasStdin = true; fprintf(stdout, "started: %s\n", asctime (timeinfo)); fprintf(stderr, "started: %s\n", asctime (timeinfo)); }
BTW: Man kann auch noch nach den Beenden des VDR nen logrotate ins Startscript schreiben, dann hat man für jeden VDR Lauf nen eigenen Logsatz (ist sehr viel übersichtlicher).
Ferner kann man sich auch noch automatisch nen Backtrace erstellen lassen falls der VDR abgestürzt war. Dazu setze ich direkt vor dem VDR Start nen individuellen Corefile Name
--
corename=\$(date \"+%s\")
echo "/tmp/%e-\$corename.core" > /proc/sys/kernel/core_pattern
--
und erzeuge nach dem Ende des VDR nen Backtrace falls nen Corefile existiert und packe den dann zusammen mit den dazugehörigen Logs zusammen ins tar.Codeif [ -e /tmp/vdr-\$corename.core ]; then gdb -batch -x /etc/gdb/backtrace $DAEMON /tmp/vdr-\$corename.core > /var/log/vdr/backtrace.txt tar -cjf /var/log/vdr/\$(date "+%Y-%m-%d-%H-%M-%S").tar.bz2 --directory=/var/log/vdr/ backtrace.txt vdr.log vdr.stdout vdr.stderr vdr.InitStdOut vdr.InitStdErr rm /var/log/vdr/backtrace.txt rm /tmp/\vdr-\$corename.core fi logrotate -f /usr/share/vdr/logrotate.conf
dann hat man immer alle Infos parat.cu
PS: Ja, ich stehe auf logging
-
Ich werde der Einfachheit wohl das auch so für mein Gentoo machen. Werde mal den Patch vorbereiten.
Und beim Starten vom VDR gibst zu zusätzlich dann welchen Parameter mit (wegen if (Terminal))? -
Und beim Starten vom VDR gibst zu zusätzlich dann welchen Parameter mit (wegen if (Terminal))?
Garnix extra, ich habe der Einfachheit halber den kompletten Codeblock gepostet. Du siehst in vdr.c schon was da im Orginal steht und was du ändern musst (die Änderung ist nicht sehr koplex).
Du musst nur darauf achten das der VDR Schreibrechte für diese Dateien hat, sonst stürzt er beim Start ab.
cu
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!