2013-02-15 82 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