電子書籍の厳選無料作品が豊富!

Java超初心者です。
Eclipseで TOMCATを使えるようにするため、
TOMCATプラグインツールをダウンロードし、TOMCATを起動してみたのですが、

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
log4j:WARN Please initialize the log4j system properly.

というエラーが出ます。
TOMCATを起動しますというメッセージは出て、起動しているとは思うのですが、
その後の日付表示などが全く出ないので、何か問題があるように思います。


log4jのインストールもしていますが、それが何か影響をあたえているのかがわかりません。
いろいろ調べてみてクラスパスの設定がよくないのかも?とも思うのですが、
そもそも環境変数とクラスパスの違いがよくわからないので、手のつけようがありません><

関連する(と思われる)環境変数は以下の通りです。

CLASSPATH : C:\jakarta-log4j-1.2.8\dist\lib\log4j-1.2.8.jar
LOG4J_HOME : C:\jakarta-log4j-1.2.8
JAVA_HOME : c:j2sdk1.4.2_07;

わかりづらい質問だと思いますが、どうか宜しくお願い致します。

A 回答 (2件)

クラスパスについて、少し混乱されているようなので簡単に説明させていただきます。



クラスパスとは、一言でいうと、jvmが実行時に読み込みを行うクラスが置いてあるパスです。
ただ、Webアプリケーションを開発されている場合、このクラスパスには2種類あると思ってください。
1.アプリケーションサーバ実行のためのクラスパス
アプリケーションサーバ(Tomcat)は、それ自体がjavaプログラムですので、その実行に際して読み込むクラスをクラスパスから読み込みます。
この場合、環境変数CLASSPATHで定義されているクラスパスを読み込みます。
2.Webアプリケーションが読み込むクラスパス
Tomcat上で動くWebアプリケーションも当然javaプログラムですので、実行時に読み込むクラスをクラスパスから読み込みます。
その際、1で読み込まれたクラスパスに加えて、各Webアプリケーションのルートディレクトリ($TOMCAT_HOME/webapps/test_appli/)の下の「WEB-INF/classes」以下を、アプリ固有のクラスパスとして動的にクラスパスへ追加して読み込むと思ってください。

(正確にはこれらに加えて、「1.5.Webコンテナが読み込むクラスパス」というのもあるのですが、それはまた別の機会に・・・)


で、本件ですが、結論からいうと環境変数で設定されているCLASSPATH上に「log4j.properties」を配置しても問題なく動作するはずです。
ただ、各Webアプリケーションで使用されるクラスは各Webアプリケーションのクラスパス上に配置すべきです。(もし環境変数のほうのクラスパスに配置すると、全てのWebアプリケーションで共通のlog4j設定を使用することになり、好ましくありません。稼動しているサービスと開発/デバック中のサービスで同じログを吐くのはありえませんよね?)

「log4j.properties」配置するのは、log4jを使用したいWebアプリのルート($TOMCAT_HOME/webapps/test_appli/)以下の「WEB-INF/classes」以下です。Tomcatに複数アプリケーションがある場合は、面倒でもそれぞれに配置してください。
オーケーでしょうか?

この回答への補足

ありがとうございましたm(_)m
shizさんのおっしゃるとおり、クラスパスというのを誤って理解しておりました・・・
今まで環境変数のCLASSPATH=クラスパスだと思い込んでいたところが
あったのですが、厳密にはそうではないんですね。
勉強不足で申し訳ありません。
このことを理解したらやっと
「classパスの通っているディレクトリに配置する」ということが理解できました☆
ありがとうございました。

補足日時:2005/08/10 10:19
    • good
    • 0
この回答へのお礼

補足に引き続いて、上記のエラーについてですが、
「log4j.properties」Webアプリのルート下のWEB-INF/classes下に配置したところ、エラーが消えました!!
本当にありがとうございました。

ほんとうにとても丁寧に答えてくださって、すごくわかりやすかったです。
まだまだ勉強中なので、これからもお世話になることがあるかもしれませんが、
そのときはどうぞよろしくお願いいたします。

ありがとうございましたo(^-^o)(o^-^)o

お礼日時:2005/08/10 10:27

エラーの内容は、「log4jを初期化しようとしてるんだけど、設定が正しくされていないので起動できない」というものです。



log4jをアプリで使用しないのであれば無視しても全く問題はないのですが、log4jを使いたいor気持ち悪いのであれば、log4jの設定を行ってあげる必要があります。

具体的には、log4j.propertiesという設定ファイルをclassパスの通っているディレクトリ(WEB-INF/classes 直下とか)に配置してあげればOKです。
その際、log4j.propertiesファイルの内容は、

------
log4j.rootCategory=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
------

などとすれば、とりあえずWARNINGは出力されなくなると思います。


log4j.propertiesファイルの詳しい記述方法、またlog4jの使い方については、参考URLのページが詳細で分かりやすいので参考になさってください。

参考URL:http://www.techscore.com/tech/ApacheJakarta/Log4 …
    • good
    • 0
この回答へのお礼

わかりやすい回答ありがとうございました(^o^)
エラーの意味もよくわからなかったので、そういうことなのかぁと納得しました。
しかし、ひとつわからないことが・・・
設定ファイルをクラスパスの通っているディレクトリとあるのですが、
それはどこを指すのでしょうか。
環境変数CLASSPATHのルートの中にあるWEB-INFのことですか??
CドライブにはWEB-INF/classesというファイル(?)がたくさん
あって配置すればよいかわかりませんでした><
もし、よろしければ教えていただけると助かります。
何度も申し訳ありません。。

お礼日時:2005/08/09 09:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!