Wann sollte ich die Datenbank für die Protokollierung verwenden und wann für Textdateien?
Ich sehe, dass Webserver und Webframeworks (die Ihre App intern verwendet) normalerweise (immer?) Anfragen und Fehler standardmäßig in Textdateien protokollieren. Aber ich sehe, dass sich Leute, die ihre App um diese Server und Frameworks herum entwickeln, manchmal in die Datenbank einloggen (sogar die Hauptdatenbank der App, keine externe).
Vielleicht gibt es auch einen Unterschied zwischen Debug-Protokollen und Audit-Protokollen - ich habe diese Klassifizierung irgendwo auf dieser Site gelesen.
25
Antworten:
Im Allgemeinen ist die Protokollierung in einer Textdatei viel schneller als die Protokollierung in einer Datenbank. Dies ist der Hauptaspekt der Protokollierung, den Sie berücksichtigen müssen.
Der Grund, warum Sie sich bei einer Datenbank anmelden, liegt eher darin, dass Sie die Ergebnisse abfragen möchten. Die Suche nach bestimmten Protokollinformationen ist in einer Datenbank einfacher, insbesondere wenn Sie Kontextinformationen protokollieren, die zum Gruppieren von Protokolleinträgen verwendet werden können. Normalerweise ist es auch einfacher, auf eine zentrale Datenbank zuzugreifen, als auf eine Protokolldatei auf einem Server, der möglicherweise gesichert ist und auf den nicht zugegriffen werden kann.
Ideal wäre es, lokal in einer Datei zu protokollieren und diese Daten anschließend zur Überprüfung in eine Datenbank zu migrieren, falls dies später erforderlich ist.
Jetzt ist Auditing ein ganz anderes Biest. Obwohl das Konzept der Protokollierung ähnlich ist, muss die Überwachung in der Regel über einen längeren Zeitraum aufbewahrt werden (im Gegensatz zu Protokolldateien, die zum Debuggen oder Nachverfolgen verwendet werden und die nach Belieben gelöscht werden können). Audits sollen wichtige Informationen anzeigen. Sie protokollieren weit weniger Überwachungsinformationen und weniger häufig als bei der normalen Protokollierung, sodass die Leistung kein Problem darstellt. Aus diesem Grund werden die Vorteile des Schreibens dieser Prüfinformationen in eine zentrale Datenbank deutlich.
quelle
Es gibt keinen einheitlichen Ansatz und aus Gründen der Ausfallsicherheit möchten Sie manchmal mehrere Ansätze verwenden. In Ihrem Beispiel möchten Sie möglicherweise Debug-Protokolle in einer Datei speichern und Überwachungsprotokolle in einer Datenbank speichern.
Anwendung Paniermehl
Vorteile: Einfach zu implementieren und für den Benutzer sofort sichtbar
Nachteile: Informationen bleiben nur erhalten, solange die Anwendung aktiv ist
Textdatei
Vorteile: Einfach zu implementieren
Nachteile: Es muss sichergestellt werden, dass keine Dateisperrung erfolgt. Was tun, wenn auf dem Protokolllaufwerk nicht mehr genügend Speicherplatz vorhanden ist?
Ereignisprotokoll
Vorteile: Einfach zu implementieren
Nachteile: Das Ereignisprotokoll wird möglicherweise voll, wenn es nicht ordnungsgemäß eingerichtet wurde, oder alte Protokolle können aufgrund von Aufbewahrungsrichtlinien / Löschvorgängen verloren gehen.
Datenbank
Vorteile: Einfach zu implementieren
Nachteile: Mehr DB-Verkehr. Wie melde ich einen DB-Verlust oder ein anderes DB-Problem?
Messaging (MQ)
Vorteile: Feuern und vergessen
Nachteile: Eine weitere Schicht, die schief geht. Benötigt eingerichtet
quelle
Überwachungsprotokolle müssen für Überwachungszwecke die vollständige Rückverfolgbarkeit von Vorgängen über einen längeren Zeitraum sicherstellen, mit dem Ziel, den Inhalt Ihrer Datenbank vollständig zu rechtfertigen.
In einigen Fällen (z. B. bei Finanzanträgen) müssen diese Protokolle möglicherweise die Einhaltung gesetzlicher Anforderungen sicherstellen, z. B. Aufbewahrung (in einigen Ländern für 10 Jahre) oder Unveränderlichkeit. Da diese Protokolle den Inhalt der Datenbank auf Anwendungsebene rechtfertigen müssen, ist es üblich, sie in der Datenbank zu speichern, wo der Zugriff kontrolliert werden kann, um unbefugte Änderungen zu vermeiden.
Andere Protokolle , wie Überwachungsprotokolle oder Sicherheitsprotokolle, müssen häufig mit Leistungs- und Datenträgereinschränkungen fertig werden. Diese werden in der Regel in eine Datei geschrieben, da sie schneller zu schreiben sind (kein Transaktionsverwaltungsaufwand), einfacher offline zu archivieren und einfacher in SIEM- Tools für die externe Überwachung zu integrieren sind.
Es wird darauf hingewiesen, dass diese Art von Protokollen zwar zum Nachweis der Zuverlässigkeit von Überwachungsprotokollen verwendet werden kann (z. B. kein unbefugter Zugriff), sie jedoch im Allgemeinen kürzere Aufbewahrungsfristen aufweisen (z. B. zwischen 6 Monaten und 2 Jahren für Strafverfolgungszwecke für Telekommunikationsprotokolle). wenn überhaupt irgendeine Einschränkung.
quelle
Einer der vielen Gründe, db für die Debug-Protokollierung zu verwenden, ist, wenn Sie keinen Zugriff auf die Anwendung oder den Webserver haben, um die Ereignisanzeige oder Textdateien anzuzeigen
Überwachungsprotokolle unterscheiden sich von Debug-Protokollen im Kontext von Webanwendungen. In einigen Anwendungen müssen Sie sie möglicherweise dem Endbenutzer anzeigen, damit sie zum einfachen Abrufen in die Datenbank gelangen können.
Sie können DB Tools auch zum Filtern und zum einfachen Anzeigen verwenden.
quelle