1

コンソールに何も出力しないJavaEEWebアプリケーションに取り組んでいます。log4jを使用し、log4j.propertiesファイルはstdoutに出力するように設定されています。ただし、機能しておらず、コンソールにログが表示されていません。System.outでさえコンソールに表示されていないことがわかりました。何が原因でしょうか?

MyEclipse 10.1、log4j-1.2.11、tomcat 5.5.35、java1.6.0_31を実行しています。

リクエストごとに、ここに私の.propertiesファイルがあります:

### direct log messages to stdout ###
# Configure Root Logger
log4j.rootLogger = DEBUG, stdout
log4j.logger.org.hibernate = DEBUG, stdout
#log4j.logger.org.springframework = ERROR, stdout

# Configure stdout Appender 
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =%d [%t] %-5p %c - %m%n

そしてログハンドラー:

public class LogHandler {
private static Logger sLog = Logger.getLogger(LogHandler.class);
public LogHandler(){

}
public void info_toLOG(String msg00) {
    sLog.info("\n" + msg00 + "\n");
}

public void error_toLOG(Exception e) {
    sLog.error("\n" + e.getClass() + "\n"
            + e.getCause() + "\n"
            + e.getMessage() + "\n"
            + e.getLocalizedMessage() + "\n"
            + e.getStackTrace().toString() + "\n");
}

public void warning_toLOG(String msg00) {
    sLog.warn("\n" + msg00 + "\n");
}

}

MyEclipseを使用して開始と停止を行います。私のTomcatインストールディレクトリをポイントするだけです。MyEclipseは、次のVM引数を追加しました。

-Dcatalina.home="<tomcat dir>" 
-Dcatalina.base="<tomcat dir> " 
-Djava.endorsed.dirs="<tomcat dir>/common/endorsed" 
-Djava.io.tmpdir="<tomcat dir>/temp" 
-Djava.library.path=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:"<tomcat dir>/bin" 
-Dsun.io.useCanonCaches=false 
-Xmx1024M

編集:助けようとした人たちに感謝します。元の質問で、Mac OSX10.7.3を実行していると述べるべきでした。[ユーティリティ]->[Java設定]->[詳細設定]->[Javaコンソール]の下に設定があり、[コンソールの表示]に設定すると問題が修正されました。

4

1 に答える 1

3

Tomcat では、System.out と System.err は catalina.out ログ ファイルに記録されます。そこで出力を確認してください。

更新正確なlog4j構成をテストしたところ、出力がtomcat7-stdout.<date>.logTomcat 7 Windowsに送信されることを確認できます。

2012-04-27 15:59:47 Commons Daemon procrun stdout initialized
2012-04-27 15:59:51,955 [http-apr-8080-exec-3] INFO  org.apache.log4j.Logger - hey log
blah

このログ ファイル名は、Tomcat 5.5 では異なりcatalina.out、Linux では異なるはずであり、Windows では別の名前になります (そのため、ドキュメントにはわかりません)。

これはコードです:

Logger l = Logger.getLogger(Logger.class);
l.info("hey log");
System.out.println("blah");

UPDATE2 Eclipse では、このタイプの出力は Eclipse コンソールに送られるはずです。WAR ファイルをビルドし、それをスタンドアロンの Tomcat にデプロイして、上記を確認してください。

于 2012-04-27T13:50:25.680 に答える