Wir haben eine Log-Datenbank bei meinem letzten Job verwendet, und es war großartig.
Wir hatten Prozeduren gespeichert, die Übersichten über den allgemeinen Systemzustand für verschiedene Metriken ausspuckten, die ich von einer Webseite laden konnte. Wir könnten auch schnell einen Trace für eine bestimmte App über einen bestimmten Zeitraum ausspucken, und wenn ich wollte, war es leicht, das als Textdatei zu bekommen, wenn Sie wirklich nur Greping-Dateien mögen.
Um sicherzustellen, dass das Logging-System selbst kein Problem wird, gibt es natürlich ein gemeinsames Code-Framework, das wir zwischen verschiedenen Apps verwendet haben, die das Schreiben in die Log-Tabelle behandelt haben. Teil dieses Frameworks enthalten auch Protokollierung in eine Datei, falls das Problem mit der Datenbank selbst ist, und ein Teil davon beinhaltet das Radfahren der Protokolle. Was die Platzprobleme anbetrifft, so befindet sich die Protokolldatenbank in einem anderen Sicherungsplan und dies ist wirklich kein Problem. Platz (nicht gesichert) ist billig.
Ich denke, dass die meisten der anderswo geäußerten Bedenken adressiert. Es ist alles eine Frage der Umsetzung. Aber wenn ich hier anhielte, wäre es immer noch ein Fall von "nicht viel schlimmer", und das ist ein schlechter Grund, sich die Mühe zu machen, DB-Logging einzurichten. Was mir daran gefallen hat ist, dass es erlaubt uns einige neue Dinge zu tun, die mit flachen Dateien viel schwerer zu tun wäre.
Es gibt vier Haupt-Verbesserungen gegenüber Dateien. Die erste ist die Systemübersichten, die ich bereits erwähnt habe. Die zweite, und am wichtigsten, war eine Überprüfung, um zu sehen, ob eine App Nachrichten fehlte, wo wir normalerweise erwarten würden, sie zu finden. So etwas ist fast unmöglich in der herkömmlichen Dateiprotokollierung zu erkennen, es sei denn, Sie verbringen jeden Tag eine Menge Zeit mit der Überprüfung von sinnlosen Logs für Apps, die Ihnen in 99% aller Fälle sagen, dass alles in Ordnung ist. Es ist erstaunlich, wie man die Ansicht freigibt, um fehlende Protokolleinträge anzuzeigen. An den meisten Tagen mussten wir uns die meisten Log-Dateien überhaupt nicht ansehen ... etwas, das ohne die Datenbank gefährlich und unverantwortlich wäre.
Das bringt die dritte Verbesserung. Wir generierten eine einzige tägliche Status-E-Mail, und es war die nur Sache, die wir an Tagen überprüfen mussten, an denen alles normal lief. Die E-Mail enthielt Fehler und Warnungen. Fehlende Protokolle wurden als Warnung von demselben db-Job erneut protokolliert, der die E-Mail gesendet hat, und das Fehlen der E-Mail war eine große Sache. Wir könnten eine bestimmte Log-Nachricht an unseren Bug-Tracker mit einem Klick senden, direkt aus der täglichen E-Mail (es war HTML-formatiert, zog Daten aus einer Web-App).
Die letzte Verbesserung war, dass, wenn wir eine bestimmte App enger folgen wollten, sagen Sie nach der Änderung, wir einen RSS-Feed für diese spezielle Anwendung abonnieren könnten, bis wir zufrieden waren. Es ist schwieriger, das aus einer Textdatei zu machen.
Wo ich jetzt bin, verlassen wir uns viel mehr auf Tools von Drittanbietern und deren Protokollierung Fähigkeiten, und das bedeutet wieder auf eine Menge mehr manuelle Überprüfung gehen. Ich vermisse wirklich die DB, und ich überlege mir, ein Tool zu schreiben, um diese Logs zu lesen und sie erneut in eine DB zu schreiben, um diese Fähigkeiten zurückzubekommen.
Auch wir haben dies mit Textdateien als Ausweich, und es sind die neuen Fähigkeiten, die wirklich die Datenbank lohnt. Wenn Sie nur in eine Datenbank schreiben und versuchen, sie auf die gleiche Weise wie die alten Textdateien zu verwenden, fügt das unnötige Komplexität hinzu und Sie können genauso gut die alten Textdateien verwenden. Es ist die Fähigkeit, das System für neue Funktionen aufzubauen, die es sich lohnen.
Wirklich meinst du irgendein RDBMS. Nein? Ich meine, entweder loggen Sie sich in Dateien ein oder Sie loggen sich in eine Datenbank ein, richtig? –