2016-07-13 4 views
0

私は主なビジネスオブジェクトがこのように構造化されているログAPIに取り組んでいます。データベース内で例外をシリアライズ

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

重大度は、列挙型
例外は、Javaの基本クラス例外です。

私はデータベースに自分のログを保存したいと思っていましたが、データベースの例外のシリアライズを保存することができません。または、私はstackTraceだけを格納する必要がある場合。

大量の行を作成するログシステムでは、これは高速でストレージを満たしませんでしたか?

データベースがオフラインのときにCSVフィルにも格納したい場合は、
シリアル化によって「、」が生成され、CSV列が混乱する可能性がありますか?


編集: 私がコメントで言ったように、このプロジェクトを学ぶための個人的なプロジェクトであり、私は私の他の個人的な用途で使用します。しかし、それはオープンソースなので、誰もが使用するデータベースシステム以上のストレージサイズは期待できません。

+0

これは、保存容量によって異なります。 – 4castle

+0

CSVファイルを作成する場合は、ライブラリを使用して、書き込むデータにカンマや改行などが含まれているかどうか心配する必要はありません。 –

+0

@ 4castleこのプロジェクトは、オープンソースのWebログを読み取るアプリケーション。だから私はユーザーのストレージのサイズを予想することはできません – MickMRCX

答えて

0

データストレージのサイズに関する限り、デフォルトで有線のtigerストレージエンジンをサポートするMongo 3.2のようなdbオプションを調べてみてください。これにより、デフォルトの圧縮率が最大90%になります。つまり、10GBのログストレージはわずか1〜1.5GBの容量で圧縮形式で格納されます。このため、アプリケーションに変更を加える必要はありません。

0

Log4Jは最も一般的なログシステムの1つです。データベースを含むいくつかのリポジトリにロギングできます。

パフォーマンスに関しては、パフォーマンスの影響を最小限に抑えるため、log4jのように、ログを書き込むためのメインスレッドとは別のスレッドを使用するログシステムを使用する方がよいでしょう。

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

+0

私はまだdevを学んでいるので、私は私の個人的なアプリケーションで使用する自分のシステムで作業したいです。私は高いパーフォーマンスシステムを求めていません。 – MickMRCX

+0

まだ[log4j](http://logging.apache.org/log4j/2.x/)はバックログを埋めるための参考になります。がんばろう! – jackattack

関連する問題