サーバから落としてきたWebアプリをローカルで動かしたらlog4jのエラーが出てしまう

このQ&Aのポイント
  • サーバから落としてきたWebアプリをローカルで動かすと、log4jのエラーが発生します
  • エラー原因と解決策について詳しく教えてください
  • ローカル環境でtomcatを起動した際にlog4jのエラーが表示されます
回答を見る
  • ベストアンサー

サーバから落としてきたWebアプリをローカルで動かしたらlog4jのエラーが出てしまう

こんにちは あるJAVAプログラムの修正を頼まれて、 ひとまずローカルにWebアプリを落として eclipseで動かそうとしたのですが、 tomcatを動かした瞬間、下記のエラーが出てしまいます。 log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.ClassLoaderFactory). log4j:WARN Please initialize the log4j system properly. このエラーが出てしまう原因は何でしょうか。 解決策も教えて頂ければ助かります。 それでは、宜しくお願いします。

  • Java
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

設定ファイルが「log4.properties」であれば、 ファイル名でgrepして使ってるところを探すか、 http://www.techscore.com/tech/Java/Log4J/2.html ↑の「2.2設定ファイルの利用」(プロパティファイル) だと PropertyConfigurator.configure() で読み込んでいるので、↑をgrepしてみてはいかがでしょうか。 http://www.techscore.com/tech/Java/Log4J/8.html ↑の「8.2設定ファイルの利用」(xmlファイル) オマケ http://www.techscore.com/tech/Java/Log4J/1.html ↑「log4jのtop」

参考URL:
http://www.techscore.com/tech/Java/Log4J/2.html

その他の回答 (2)

回答No.2

log4jのjarと、実際にlog4jの設定ファイルを読み込んでるところのパス指定は大丈夫ですか?

yamada411
質問者

補足

log4jのjarは大丈夫そうです。 知識不足ですみません、log4jの設定ファイルを読み込んでるところのパス指定は、どういう所に書かれているものですか?

回答No.1

loggerで使用してるappenderが見つからない。 log4jをきちんと初期化しろ。 ってことみたいですよ。 webアプリの下にlog4jのライブラリや設定ファイルがちゃんとありますか? APサーバー上とローカル上のlog4jの設定を見直した方がいいと思います。

yamada411
質問者

補足

log4j.propertiesは、WEB-INFの下にある事を確認しました。 ローカルでの内容は下の通りに設定しています。 どこかセッティングがうまく行ってないんでしょうか… ## CON: Console setting. log4j.appender.CON=org.apache.log4j.ConsoleAppender log4j.appender.CON.layout=org.apache.log4j.PatternLayout log4j.appender.CON.layout.ConversionPattern=%d [%-5p] %m (%F:%L)%n ## SYS: Syslog setting. log4j.appender.SYS=org.apache.log4j.net.SyslogAppender log4j.appender.SYS.layout=org.apache.log4j.PatternLayout log4j.appender.SYS.layout.ConversionPattern=MCS: [%-5p] %m%n log4j.appender.SYS.SyslogHost=127.0.0.1 ## FILE: Log file setting. log4j.appender.FILE=org.apache.log4j.RollingFileAppender ##log4j.appender.FILE.File=./logs/mailchecker.log log4j.appender.FILE.File=e:\\temp\\mailchecker.log log4j.appender.FILE.MaxFileSize=1000KB log4j.appender.FILE.MaxBackupIndex=3 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d [%-5p] %m (%F:%L)%n ## LOGIC: Log file of check logic. log4j.appender.LOGIC=org.apache.log4j.RollingFileAppender ##log4j.appender.LOGIC.File=./logs/logic.log log4j.appender.LOGIC.File=e:\\temp\\logic.log log4j.appender.LOGIC.MaxFileSize=1000KB log4j.appender.LOGIC.MaxBackupIndex=3 log4j.appender.LOGIC.layout=org.apache.log4j.PatternLayout log4j.appender.LOGIC.layout.ConversionPattern=%d %m%n ## SYSTEM Logger setting (error lebel, output) log4j.logger.rinrin.common.Log.SYSTEM=WARN,SYS ## APPLICATION Logger setting (error lebel, output) log4j.logger.rinrin.common.Log.APPLICATION=INFO,FILE ## LOGIC Logger setting (error lebel, output) log4j.logger.rinrin.common.Log.LOGIC=DEBUG,LOGIC

関連するQ&A

  • Eclipse上でのTOMCATのエラー

    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; わかりづらい質問だと思いますが、どうか宜しくお願い致します。

    • ベストアンサー
    • Java
  • サーバ起動時の警告は無視して構いませんか?

    只今、MySQL+JSP+Java Beansで小さなアプリケーションを書いています。 JSPは、JSP+Ajax(DWR)ですのでサーブレットは省いた格好です。 悪戦苦闘しましたが、何とかJSPからJavaのメソッドをコールして結果を取得し表示できています。 と、表面上は問題なく動作しているのですが、少し、気になることがあります。 それは、サーバ(TOMCAT)起動時に次の警告が出ることです。 log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax). log4j:WARN Please initialize the log4j system properly. で、質問は3つです。 1、これは、Ajaxのライブラリに起因する警告でしょうか? 2、問題なく動作している限りでは無視していて構わないのでしょうか? 3、何らかの対策があるのでしょうか? 当方、定年退職を機に初めてJavaなるものに取り組んでいます。 まだまだ、Javaの勉強を開始して5ヶ月という超初心者。 宜しく、ご回答の程をお願いします。

    • ベストアンサー
    • Java
  • eclipseからtomcat起動できない

    eclipse から Tomcat を起動すると、 "Could not find the main class. Program will exit!" というエラーダイアログが表示され、 コンソールには、 java.lang.NoClassDefFoundError: org/apache/catalina/startup/Bootstrap Exception in thread "main" とエラーが表示されます。 まったくの初心者でどうしたらよいのか解らず困っています。 どうしたらよいのか教えてください。 (環境) Tomcat 5.5.20 JDK 5.0.9 Eclipse 3.2.1

  • webアプリが動かなくなりました。どこが原因か教えてください

    webアプリが動かなくなりました。どこが原因か教えてください エクリプスでソースのビルドパスを除外し、web.xmlをいじった後 元に戻したら動かなくなりました。 「サーブレット○○は現在利用できませんや ブラウザにはサーブレット○○が利用できません など出てきます。 原因をさがしたけどわかりませんでした。 環境は jdk1.6 eclipse3.2 posgre8.3 tomcat6.0 です。 エクリプスコンソールログ 情報: Server startup in 2894 ms 2010/05/04 20:57:20 org.apache.catalina.core.ApplicationContext log 情報: サーブレット Sample1 を利用不可能にマークします 2010/05/04 20:57:20 org.apache.catalina.core.ApplicationContext log 致命的: Error loading WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@123b25c info.searchman.Sample1 java.lang.ClassNotFoundException: info.searchman.Sample1 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 中略 ブラウザ javax.servlet.ServletException: ラッパがサーブレットクラス info.searchman.Sample1 又はそれが依存するクラスを見つけることができません org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) java.lang.Thread.run(Unknown Source)

    • ベストアンサー
    • Java
  • Log4jのインストール

    Java初心者です。Log4Jをダウンロードして、サンプルコードを実行しようとしているのですが、うまく行きません。インストール手順が何か足りないのでしょうか。 環境: OS=MacOSX Java-version=1.5.0_16 (1)Log4jをダウンロードし、解凍して、そのうちファイル名=log4j-1.2.15.jarをソースと同じディレクトリに置く (2)ウェブで探してきたテスト用のサンプルコード(下記参照)をlog4J.javaというファイル名で作成 (3)CLASSPATH=xxx.xxx(ソースのある絶対パス)/log4j-1.2.15.jar; export CLASSPATH を実行してクラスパスを通す (4)javac log4J.javaでコンパイル(エラーは出ず) (5)java log4Jを実行 Exception in thread "main" java.lang.NoClassDefFoundError: log4J 例外エラー発生。なぜだかお分かりでしょうか? import org.apache.log4j.*; public class log4J { static Logger logger = Logger.getLogger(log4J.class); public static void main(String[] args) { BasicConfigurator.configure(); logger.debug("Hello world."); logger.info("What a beatiful day."); } }

    • ベストアンサー
    • Java
  • log4jでログレベルが取得できない。

    次のようなLOG4jの設定ファイルからログレベルを取得したいのですが うまく取得できません。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- 一般ログファイル出力 --> <appender name="LogFile" class="org.apache.log4j.FileAppender"> <param name="File" value="c:/TestLog4j.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p %m (%F:%L) %c[%t]%n"/> </layout> </appender> <!-- 一般ログ出力設定 --> <logger name="clip"> <level value="DEBUG"/> <appender-ref ref="LogFile"/> </logger> </log4j:configuration> JAVAのソースは //ログ4j設定ファイル読み込み DOMConfigurator.configure("c:/log4j.xml"); //ロガーの取得 Logger batchLog = Logger.getLogger(getClass()); //テストログの出力 batchLog.fatal("テスト"); //ログレベルの取得 Level logLevel = batchLog.getLevel(); System.out.println(logLevel);   // 結果:null System.out.println(logLevel.toString()); // NullPointerExceptionでエラー テストログは出力できるのですが、ログレベルの取得で エラーになってしまいます。 log4jの設定ファイルからログレベルを取得するにはどうすれば 良いのでしょうか?

    • ベストアンサー
    • Java
  • Log4Jではログを改行できない?

    お世話になっております。 ログ出力用として Log4J を利用しているのですが、 1つのログメソッドでログ内容を改行することはできないのでしょうか? 以下のコードにおいて、改行コードが半角スペースに変換されてログファイルに出力されてしまいます。 ※コードは省略しています。 import org.apache.log4j.Logger; protected static final Logger logger = Logger.getLogger(X.class.getName(), new Factoty()); logger.info(new StringBuilder() .append("xxxx").append("\r\n") .append("yyyy") .toString()); 【出力結果】 xxxx yyyy テキストエディタで検索をかけても、「xxxx」と「yyyy」の間は「半角スペース」で一致します。 環境は WindowsXP です。 ご存知のかたがいらっしゃればご教示お願いいたします。

    • ベストアンサー
    • Java
  • log4jについて

    log4jというのを使ってログをeclipseのコンソールに出そうと、 log4j.rootCategory=DEBUG, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=DEBUG log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS} %-5p|(%F#%M:%L) %n としました。 ですが、ログが 2005/01/11 14:59:40.792 INFO |(?#info:?) となって%Fと%Lが出力されてません。 原因として何が考えられるでしょうか? また、対応策はどうしたらよいでしょうか?

    • ベストアンサー
    • Java
  • EclipseからTomcatを起動できない

    OS: Windows XP ServicePack2 Java: 1.4.2_06 Tomcat: 4.1.31 Eclipse: 2.1.2 Sysdeo Tomcat Plug-In: 2.2.1 を使用しております。 EclipseからTomcatを起動しようとすると以下のエラーが出ます。 Catalina.start: LifecycleException: 以前のエラーのためにコンテキストの起動が失敗しました LifecycleException: 以前のエラーのためにコンテキストの起動が失敗しました at org.apache.catalina.core.StandardContext.start(StandardContext.java:3578)        ・        ・        ・ at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156) サービス Tomcat-Standalone を停止します Catalina.stop: LifecycleException: Coyoteコネクタは起動されていません LifecycleException: Coyoteコネクタは起動されていません スタートメニューからTomcatを起動すると上記のエラーは出ません。 この原因として何が考えられるでしょうか?

  • Javaでlog4jを使ってログを出力させてます。

    Javaでlog4jを使ってログを出力させてます。 複数のログを出力したいので、同一propertiesに複数のAppenderを定義しています。 内容は以下の通りです。 log4j.logger.processA=DEBUG, A log4j.appender.A=org.apache.log4j.DailyRollingFileAppender log4j.appender.A.File=a.log log4j.appender.A.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.A.Append=true log4j.appender.A.layout=org.apache.log4j.PatternLayout log4j.appender.A.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %c - %m%n log4j.logger.processB=DEBUG, B log4j.appender.B=org.apache.log4j.DailyRollingFileAppender log4j.appender.B.File=b.log log4j.appender.B.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.B.Append=true log4j.appender.B.layout=org.apache.log4j.PatternLayout log4j.appender.B.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %c - %m%n log4j.logger.processC=DEBUG, C log4j.appender.C=org.apache.log4j.DailyRollingFileAppender log4j.appender.C.File=c.log log4j.appender.C.DatePattern='.'yyyy-MM-dd-HH-mm log4j.appender.C.Append=true log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %c - %m%n processAやらprocessB、processCは同一サーバ内で非同期で動くプロセスです。 つまり、動作するプロセス毎にログ出力先を変えてます。 各プロセスを動かすと、ちゃんと想定したログファイルに出力されるんですが、 ローテートの時に「log4j:ERROR Failed to rename ~」のエラーが出て、 正常にローテートしません。 なぜだろうと思って、一度全てのログファイルを削除して、 processAだけ動かしてみました。 すると、a.logだけが出力されると思いきや、 b.logとc.logまで0kbではありますが出力されたんです。 つまり、データこそ出力しないけど、 他プロセスで出力するファイルをロックしてたんです。 これって、同一propertiesに書いているのが悪いんでしょうか? それとも、設定が不足している為、そうなってしまってるんでしょうか? ご存知の方、お知恵をお貸し下さい。

    • ベストアンサー
    • Java

専門家に質問してみよう