- PR -

WebサービスでのLog4J

1
投稿者投稿内容
TK
会議室デビュー日: 2007/08/24
投稿数: 5
投稿日時: 2007-10-30 20:16
Webサービスでのlog4jがうまく動かないのでお知恵拝借させてください。
サーバはWebLogicで、フレームワークとしてspringを使っています。

ログを出力するのにLog4Jを使いたいのですが、
以下のようなメッセージが出てしまい、ログが出ずに悩んでいます。
log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory).
log4j:WARN Please initialize the log4j system properly.

過去ログを見ると、このメッセージが出てログが出ない場合は
log4j.propertiesをWEB-INF/classesに置けばできると書いてあったのですが、
最初からそこに置いています。
log4j.propertiesの配置を変えてログが出たこともあったのですが、
念のためWebLogicサーバを再起動して確認すると同じ環境でもログが出なくなってしまい、
どこに置くのが正解なのかわからなくなってしまいました。

なお、普通と少し違うかもしれないのは、
サーバにデプロイするのにwarに固めるのではなく、
展開した形でフォルダを指定してデプロイを行っている点です。
ただし、試しにwarに固めてデプロイしたところ、
同じ状況でもログが出たり出なかったりというのは変わりませんでした。

何か解決の手がかりをご存知の方はご教示願います。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-10-30 21:10
うる覚えでなんなんですけど、以前Weblogic9.1を仕事で使ったときに、
Log4Jの設定ネタがBEAのオンラインドキュメントに載っていた気がします。
コンソールマネージャで切り替えとかした気がする・・・。
NOBO
会議室デビュー日: 2007/10/31
投稿数: 1
投稿日時: 2007-10-31 14:02
できればWeblogicサーバーのバージョンを教えてほしいところですが、
log4j.propertiesをWEB-INF/classesに配置しても読み込まれなかったということは、
log4j.jarファイルがアプリケーションのクラスローダーではなく、ドメインのクラスローダーで処理されている可能性がありますね。
ドメインフォルダ\libにlog4j.jarファイルがあるようならばドメインのクラスローダーで処理されています。その場合は、log4j.propertiesファイルをドメインフォルダの直下に置けば、読み込まれると思います。
あるいは、ドメインフォルダ\libからlog4j.jarを削除して、アプリケーションのWEB-INF/libにlog4j.jarを配置すれば、今度はアプリケーションのクラスローダーで処理されて、
WEB-INF/classesに配置したlog4j.propertiesが読み込まれると思います。
TK
会議室デビュー日: 2007/08/24
投稿数: 5
投稿日時: 2007-10-31 19:44
ご教示ありがとうございます。
WebLogicは9.2を使っています。

小僧さん>
BEAのサイト内を探してみたのですが、残念ながらそれらしい箇所はわかりませんでした。

NOBOさん>
ドメイン直下にlog4j.propertiesを置いてもドメイン/lib/log4j.jarがあると状況は変わらず、
ドメイン/lib/log4j.jarを削除したところlog4j:WARNのメッセージは出なくなりました。

ただ、出力されたログがlog4j.propertiesで設定した形式ではなかったので、
どこか別のlog4jの設定を読み込んでいるようです。


再度いろいろ調べたところ、LOG4J_CONFIG_FILEという環境変数に
log4j.propertiesをフルパスで設定しておくとWebLogic起動時に読み込まれ、
期待通りの動きをすることができました。

お騒がせしました。ありがとうございました。
1

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