0

Bug4J ライブラリのエラーを報告しようとしています。彼らのウェブサイトによると、log4j.xml ファイル内に次のディレクティブを挿入する必要があります。

    <appender name="bug4j" class="org.bug4j.client.Bug4jAppender">
       <param name="serverUrl" value="http://<bug4j.host.name>:8063/"/>
       <param name="applicationName" value="My Application"/>
       <param name="applicationVersion" value="1.3"/>
    </appender>

プロパティ ファイルを使用せずに同じパラメーターを設定しようとしていますが、localhost:8063 の Web コンソールでエラーは報告されません。これまでのところ、次のことを試しました。

public TestClass
{
 static Logger log = Logger.getLogger(TestClass.class);
 TestClass()
  {
    BasicConfigurator.configure();
    Logger.getRootLogger().setLevel(Level.INFO);

    Bug4jAppender bug4jAppender = new Bug4jAppender();
    bug4jAppender.setName("BUG4J");
    bug4jAppender.setServerUrl("http://localhost:8063/");
    bug4jAppender.setApplicationName("testapp");
    bug4jAppender.setApplicationVersion("1.9");

    Logger.getRootLogger().addAppender(bug4jAppender);
    log.addAppender(bug4jAppender);

    Bug4jAgent.report("Failed to do something", null);
    log.info("Failed to do something");
 }
}

アイデアはありますか?

編集:追加すると、実際に何も報告されない理由に関連している可能性があります:

    BasicConfigurator.configure();
    Logger.getRootLogger().setLevel(Level.INFO);

    Bug4jAppender bug4jAppender = new Bug4jAppender();
    bug4jAppender.setName("BUG4J");
    bug4jAppender.setServerUrl("http://127.0.0.1:8063/");
    bug4jAppender.setApplicationName("testapp");
    bug4jAppender.setApplicationVersion("1.9");
    bug4jAppender.activateOptions();

    Logger.getRootLogger().addAppender(bug4jAppender);

    //Bug4jAgent.report("Failed to do something", null);
    log.warn("Failed to do something");
    Bug4jAgent.shutdown();

私は得る

 Exception in thread "main" java.lang.NullPointerException
at org.bug4j.client.Bug4jAppender.append(Bug4jAppender.java:48)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at     org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.warn(Category.java:1043)
at testapp.Main.<init>(Main.java:118)
at testapp.Main.main(Main.java:837)
4

1 に答える 1

0
  1. Log4jアペンダーで「オプションをアクティブ化」する必要があります。

    bug4jAppender.activateOptions();
    
  2. bug4jエージェントは邪魔にならないようにしたいので、レポートをキューに入れ、バックグラウンドスレッドによって処理されます。問題を報告した直後にアプリケーションが停止した場合は、バックグラウンドスレッドがキューに残っているすべてのエラーを報告するのを待つ必要があります。
    main()の最後に次の行を追加します。

    Bug4jAgent.shutdown();
    
  3. Bug4jは、log4jの有無にかかわらず使用できます。log4jで使用する場合は、プログラムでエージェントをセットアップできますが、それを忘れて、log4jを使用してエラーを報告するだけです。
    それ以外の

    Bug4jAgent.report("Failed to do something", null);
    log.info("Failed to do something");
    

    電話するだけ

    log.error("Failed to do something");
    

最終的には、次のようなものになるはずです。

    BasicConfigurator.configure();
    Logger.getRootLogger().setLevel(Level.INFO);

    Bug4jAppender bug4jAppender = new Bug4jAppender();
    bug4jAppender.setName("BUG4J");
    bug4jAppender.setServerUrl("http://localhost:8063/");
    bug4jAppender.setApplicationName("testapp");
    bug4jAppender.setApplicationVersion("1.9");
    bug4jAppender.activateOptions();

    Logger.getRootLogger().addAppender(bug4jAppender);

    log.error("Failed to do something");
    Bug4jAgent.shutdown();
于 2013-02-16T16:14:51.013 に答える