- - PR -
DBにログ出力
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-13 21:25
Javaから、ログをファイルでなくログに出力したいのですが、素敵な方法はありませんか?
普通にinsertを発行するクラスを作ればいいのですが、それだと出力の効率がネックになると考えています。 今は、log4jの拡張として考えていますが、log4jのようなログレベルが必要がないのでそれでいいのか迷っています。 もっといい方法や、ライブラリがあれば教えて下さい。 | ||||
|
投稿日時: 2006-02-13 22:21
log4jにJDBCAppenderというズバリなクラスが存在しますが、
これでは問題があるから、違う実装を探していると言う事でしょうか。 http://logging.apache.org/log4j/docs/api/org/apache/log4j/jdbc/JDBCAppender.html ログをデータベースに格納するのであれば、 どんな実装であれ、一定のコストは必要です。 ConnectionとPreparedStatementを都度生成するではなく、 キャッシュするなどの工夫によって、 パフォーマンスを稼ぐことも可能ですよ。 | ||||
|
投稿日時: 2006-02-14 09:55
今、まさにJDBCAppenderを使った検証を行ってました。
しかし、ログにはログレベルに関係なく必ず出力したいのです。 そうすると、ログ出力するメソッドが意味のないものになってしまうのを気にしていました。 また、単純なJDBCでのログ出力ではコストもそうなのですが、ログ出力が処理の一部となってしまうため、パフォーマンスやトランザクションを気にしています。 そういう意味では、Loggerは別スレッド?として処理するためログ出力を最適化されてるのではないかと思っていました。 | ||||
|
投稿日時: 2006-02-14 11:30
解決方法でなくて申し訳ありませんが、、、
別に意味のないものにはなりませんよ。 よく使われているクラスを使ってログ出力することで、ログ出力という本来の機能とは関係ない部分の実装方法を考えたり新たに覚える労力を減らせます。 また、ログをDBに出力するのを何らかの理由からファイルに変更することになっても、大きな修正をする必要がありません。 それに、今は必要なくても結局ログレベルを使うことになるかもしれませんよ? log4j等のログ出力用ライブラリを使う利点は、ログレベル以外の点のほうが断然大きいです。 log4jで実現できるようなら、迷わず使ってしまえばいいかと思います。 | ||||
|
投稿日時: 2006-02-14 13:27
かつのり様
ありがとうございます。 そのことを聞いて今の方針で行くことに決めました。 もうひとつ疑問なのですが、 この場合、ログ出力するときのメソッドは合わせた方がいいのでしょうか? 例えば、debugメソッドでログを出力しておくようにしておいて、プロパティのログレベルをINFOなどにして運用するという方法がベストなんでしょうか? |
1