0

誰かがlog4jの経験があり、「コンストラクター()が表示されない」とはどういう意味か知っていますか?

Mainクラスのコードは次のとおりです。

import org.apache.log4j.xml.DOMConfigurator;
import stdGame.*;
public class Main {
  public static void main(String[] args) {
      DOMConfigurator.configureAndWatch( "data/log/myLoggerConfig.xml", 60*1000 );
      new LogTest();
    }
}

LogTest-classはstdGame-packageにあり、ご覧のとおり、すでにインポートされています。LogTestクラスをMainクラスと同じパッケージに配置すると、コードは期待どおりに機能します。LogTest()クラスのコードは次のとおりです。

package stdGame;
import org.apache.log4j.Logger;
public class LogTest {
    private static Logger logger = Logger.getLogger(LogTest.class);
    LogTest() {
        logger.info("My info-msg in LogTest.");
        logger.error("My error-msg in LogTest.");
    }
}

それらを同じパッケージに入れてみてください。エラーメッセージが消えます。しかし、私はそれらを別々のパッケージに入れる必要があります。

最後に、これはmyLoggerConfig.xmlファイルです。

  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="MeinAppender" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="datePattern" value="'.'yyyy-MM-dd_HH-mm" />
  <param name="file" value="data/log/myLogfile.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c: %m%n" />
  </layout>
  </appender>
  <root>
  <priority value="INFO" />
  <appender-ref ref="MeinAppender" />
  </root>
  </log4j:configuration>
4

1 に答える 1

3

クラスLogTeststdNameパッケージに含まれており、そのコンストラクターがpackage-privateアクセスできます。Mainクラスは以外のパッケージに含まれているようです。stdNameそのため、コンパイラはLogTest()コンストラクタがMainのパッケージに表示されないと文句を言っています。のコンストラクタLogTestをpublicに変更します。

于 2012-10-24T09:42:08.137 に答える