2016-07-13 9 views
0

Ich arbeite an einem Protokoll API, die das Hauptgeschäftsobjekt wie folgt strukturiert ist.Serialize Exception in Datenbank

public class Log{ 
    private int identifier; 
    private Exception exception; 
    private Severity severity; 
    private Date date; 
    private String message; 
} 

Severity ist eine Enum
Exception die Exception java Basisklasse ist.

Ich wollte meine Protokolle in der Datenbank speichern, aber ich bin nicht sicher über das Speichern einer Serialisierung der Ausnahme in der Datenbank. Oder wenn ich nur den StackTrace speichern sollte.

Würde nicht, in einem Protokollsystem, das Tonnen von Linien erzeugen kann, diese meinen Speicher mit hoher Geschwindigkeit füllen?

Wenn ich es auch in einer CSV-Füllung speichern möchten, während die Datenbank offline ist.
Könnte eine Serialisierung ein "," erzeugen, das sich mit meiner CSV-Spalte vermischen könnte?


Edit: Wie ich in den Kommentaren gesagt ist dieses Projekt ein personnal Projekt zu lernen, und ich will es in meinen anderen personnal Anwendungen nutzen. Aber es wird Open-Source sein, daher kann ich nicht die Speichergröße aller Benutzer voraussehen, die es nicht mehr als das Datenbanksystem verwenden, das sie verwenden werden.

+0

Es hängt davon ab, wie viel Speicherplatz Sie haben. – 4castle

+0

Wenn Sie eine CSV-Datei schreiben, verwenden Sie eine Bibliothek, damit Sie sich keine Gedanken darüber machen müssen, ob die von Ihnen geschriebenen Daten Kommas, Zeilenumbrüche usw. enthalten. –

+0

@ 4castle Dieses Projekt wird mit einem Web ausgeliefert Anwendung zum Lesen der Protokolle. Ich kann also die Größe des Benutzerspeichers nicht voraussehen – MickMRCX

Antwort

0

Soweit Datenspeichergröße betroffen ist, versuchen Sie, db Optionen wie Mongo 3.2, die verdrahtete Tiger Storage-Engine standardmäßig unterstützt zu betrachten. Dies bietet eine Standardkompression von bis zu 90%. Dies bedeutet, dass ein 10-GB-Protokollspeicher in der komprimierten Form in nur 1-1,5 GB Speicherplatz gespeichert wird. Dazu müssen Sie in Ihrer Anwendung keine Änderungen vornehmen.

0

Log4J war eines der beliebtesten Logging-Systeme. Es ist in der Lage, auf mehrere Repositories einschließlich einer Datenbank zu protokollieren.

In Bezug auf die Leistung ist es besser, ein Protokollierungssystem zu verwenden, das separate Protokolle als das Hauptprotokoll zum Schreiben von Protokollen verwendet, wie dies bei log4j der Fall ist, um die Performance minimal zu beeinflussen.

http://logging.apache.org/log4j/2.x/

+0

Ich lerne immer noch Dev, also möchte ich an meinem eigenen System arbeiten, das ich in meinen persönlichen Anwendungen verwenden werde. Ich bin nicht auf der Suche nach einem leistungsstarken System. – MickMRCX

+0

Noch [log4j] (http://logging.apache.org/log4j/2.x/) könnte eine gute Referenz sein, um Ihren Rückstand aufzufüllen. Viel Glück! – jackattack