2013-02-15 61 views
0

我想用Bug4J庫報告錯誤。 根據他們的網站,你應該將您的log4j.xml文件中的下列指令:Bug4j設置appender沒有Log4j屬性文件

<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上的Web控制檯報告:8063 ,到目前爲止我嘗試了以下內容:

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) 
+0

這是非常可悲的沒有人可以給這個好產品支持這似乎是唯一能夠報告遠程錯誤並向開發人員提供完善的Web界面和無線網絡的人th一個足夠簡單的庫,使其可以在Java應用程序中快速部署 – dendini 2013-04-15 15:31:51

+0

很長一段時間,但您是否嘗試直接作爲測試調用bug4JAgent?對於我們來說,我們遇到了問題,因爲我們向託管bug4j的tomcat服務器添加了身份驗證 - 錯誤! – MJB 2015-03-19 23:49:06

+0

我沒有任何身份驗證使用Glassfish。猜猜這個產品已經死了,因爲沒有人在這個論壇上回復:( – dendini 2015-03-20 08:19:09

回答

0
  1. 你必須 「激活選項」 上Log4j appender。

    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(); 
+0

很容易測試我遵循你的提示,但仍然沒有發送到bug4j服務器。我嘗試使用本地主機,127.0.0.1或我的ip,但沒有,我已經設置了應用程序名稱等於內部的bug4j服務器管理部分,該包等於我的源文件包,appender名稱等於BUG4J。沒有看到其他可能出現的錯誤 – dendini 2013-02-18 11:08:51