- PR -

DBにログ出力

1
投稿者投稿内容
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2006-02-13 21:25
Javaから、ログをファイルでなくログに出力したいのですが、素敵な方法はありませんか?
普通にinsertを発行するクラスを作ればいいのですが、それだと出力の効率がネックになると考えています。
今は、log4jの拡張として考えていますが、log4jのようなログレベルが必要がないのでそれでいいのか迷っています。

もっといい方法や、ライブラリがあれば教えて下さい。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-02-13 22:21
log4jにJDBCAppenderというズバリなクラスが存在しますが、
これでは問題があるから、違う実装を探していると言う事でしょうか。
http://logging.apache.org/log4j/docs/api/org/apache/log4j/jdbc/JDBCAppender.html

ログをデータベースに格納するのであれば、
どんな実装であれ、一定のコストは必要です。
ConnectionとPreparedStatementを都度生成するではなく、
キャッシュするなどの工夫によって、
パフォーマンスを稼ぐことも可能ですよ。
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2006-02-14 09:55
今、まさにJDBCAppenderを使った検証を行ってました。
しかし、ログにはログレベルに関係なく必ず出力したいのです。
そうすると、ログ出力するメソッドが意味のないものになってしまうのを気にしていました。

また、単純なJDBCでのログ出力ではコストもそうなのですが、ログ出力が処理の一部となってしまうため、パフォーマンスやトランザクションを気にしています。
そういう意味では、Loggerは別スレッド?として処理するためログ出力を最適化されてるのではないかと思っていました。
まいるどきゃっと
大ベテラン
会議室デビュー日: 2004/08/12
投稿数: 135
お住まい・勤務地: 群馬
投稿日時: 2006-02-14 11:30
解決方法でなくて申し訳ありませんが、、、

引用:

るーさんさんの書き込み (2006-02-14 09:55) より:

しかし、ログにはログレベルに関係なく必ず出力したいのです。
そうすると、ログ出力するメソッドが意味のないものになってしまうのを気にしていました。



別に意味のないものにはなりませんよ。
よく使われているクラスを使ってログ出力することで、ログ出力という本来の機能とは関係ない部分の実装方法を考えたり新たに覚える労力を減らせます。
また、ログをDBに出力するのを何らかの理由からファイルに変更することになっても、大きな修正をする必要がありません。
それに、今は必要なくても結局ログレベルを使うことになるかもしれませんよ?

log4j等のログ出力用ライブラリを使う利点は、ログレベル以外の点のほうが断然大きいです。
log4jで実現できるようなら、迷わず使ってしまえばいいかと思います。
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2006-02-14 13:27
かつのり様
ありがとうございます。
そのことを聞いて今の方針で行くことに決めました。

もうひとつ疑問なのですが、
この場合、ログ出力するときのメソッドは合わせた方がいいのでしょうか?
例えば、debugメソッドでログを出力しておくようにしておいて、プロパティのログレベルをINFOなどにして運用するという方法がベストなんでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)