Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

log4jでログインIDを出力

SQLを発行したユーザを特定する為のログを出力したいと思っています。

ログインIDやアクションメソッド名、任意の変数をlog4j.propertiesに設定することは出来るのでしょうか?
------
# ログファイル
log4j.category.org.seasar.extension.jdbc=DEBUG, A
log4j.appender.A=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.encoding=UTF-8
log4j.appender.A.datePattern='.'yyyy-MM-dd
log4j.appender.A.Append=true
log4j.appender.A.file=C:/sql/sql.log
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{HH:mm:ss} - %m%n

9

回答

9500

閲覧

9件の回答

評価

0

プロパティの書き方は調べてみた?
標準で用意されているもの以外は、全部「メッセージ」という文字列だよ。

評価

0

$さん
ありがとうございます。

Loggerなど使わない方法で
log4j.propertiesの設定か
インターセプタを利用して実現しようとネット等を調べています。

よい方法をどなたかご教授お願いします。

評価

0

log4jがそれらの情報を自動的に出力できない理由が分からないなら、あまり設計に向いていないかもしれない。

出力したいと考えている情報は、時間のような情報と違ってシステムを作る人にしか存在する場所が分からず、また他の人にはなんら意味のない情報だよ。

log4jのようなライブラリは、魔法でもなんでもない。
多くの人が書くであろうロジックを、代わりに書いてくれたものにすぎない。
従って、そこで扱える情報は言語で扱える共通情報か、作っている人が明示的に与えた値に限られる。

評価

0

$さん
ありがとうございます。

評価

0

1.3で導入されたMDCを使えば、今のコードとは分離してかつ動的に値を積むことも可能だけど、いずれにしても値を指定する必要はある。

http://masayuki.pbworks.com/w/page/20454373/Log4jのセッションIDや任意文字列を共通的に出力(NDCを利用)

評価

0

$さん
ありがとうございます。

報告遅れました。
昨晩遅くに、Filterを利用して解決に至りました。
皆さんありがとうございました。
またよろしくお願いします。

評価

0

昔、ホスト名が出力されるように
パターンレイアウトを拡張した事があります。

たぶん、その時参考にしたのはこれ
http://www.jajakarta.org/log4j/jakarta-log4j-1.1.3/docs-ja/deepExtension.html

ただし、ホスト名は別スレッドであろうと変わらないけど、
ログインIDやアクションメソッド名をどうやって取得するかは
一工夫必要と思われます。

評価

0

satomiさん、
ありがとうございます!

>パターンレイアウトを拡張した事があります。

パターンレイアウトの拡張という方向では
全く調べていませんでした。
参考URLありがとうございます。読んでみます。

評価

0

そういえばAppenderはいろいろやったけど、Layoutを拡張したことはなかったなあ。
これも便利そうだ。

>Filterを利用して解決に至りました。

んー、要するに「今のコードと分離」できれば、コードを書くこと自体は問題なかった?
Loggerへのアクセスが方々に散らばってるから、それを全部直したくなかったのかな。

私が作る場合、大抵ログの出力だけをメソッド化しているので、内容を変える場合はそこだけいじれば良かったんだけど。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。