首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用logback appender登录到Splunk

尝试使用logback appender登录到Splunk
EN

Stack Overflow用户
提问于 2016-11-22 22:24:00
回答 1查看 9.9K关注 0票数 3

我正试图在我的Java应用程序中直接登录到splunk,使用用于splunk的logback附录。

似乎什么都不会发生,但是当我在REST客户机中手动发出post命令时,我在splunk中看到了我的数据。

我也没能让正式的扣篮登录测试开始工作。

logback.xml

代码语言:javascript
复制
  <appender name="SPLUNK" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
    <url>http://mySplunkUrl:8088/services/collector</url>
    <token>1234566789</token>
    <disableCertificateValidation>true</disableCertificateValidation>
    <batch_size_count>1</batch_size_count>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%msg</pattern>
    </layout>
  </appender>

  <root level="trace">
    <appender-ref ref="SPLUNK" />
  </root>

</configuration>

单元测试

代码语言:javascript
复制
@Test
public void splunkLogger() {
    Logger logger = LoggerFactory.getLogger(LogFactoryTest.class);
    Date date = new Date();
    String jsonMsg = String.format("{event:'CancerCenterTest'}");
    logger.info("CancerCenterTest");
    logger.info(jsonMsg);
}

这是我试图使用的文档:http://dev.splunk.com/view/splunk-logging-java/SP-CAAAE7M

我漏掉了什么明显的东西吗?

编辑这里有一个指向我的项目- https://github.com/toymachiner62/splunk-logging的链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 21:25:31

问题似乎是,一个单元测试JVM将在Splunk后台线程完成日志上传之前退出。

Splunk的Logback适配器使用后台线程以批方式向服务器发送消息。批处理由batch_intervalbatch_size_bytesbatch_size_count参数控制。即使它们都设置为非常低的级别,单元测试JVM也可能在线程完成之前退出并关闭线程。

尝试将睡眠添加到测试方法的末尾。

代码语言:javascript
复制
Thread.sleep(5000);

另外,由于某些错误,发送可能会失败。可以通过添加以下代码片段来捕获Splunk发送方故障:

代码语言:javascript
复制
HttpEventCollectorErrorHandler.onError(new HttpEventCollectorErrorHandler.ErrorCallback() {
    public void error(final List<HttpEventCollectorEventInfo> events, final Exception ex) {
        // FIXME: Dumping stack trace to STDERR is not suitable for production use !
        ex.printStackTrace();
    }
});

请注意,HttpEventCollectorSender似乎没有设置任何HttpClient超时,因此如果端点不可达,则连接超时可能需要几分钟时间,并出现错误消息。

编辑:事实证明,url参数在logback.xml中也有问题。必须在没有路径的情况下指定URL,例如http://mySplunkUrl:8088/而不是http://mySplunkUrl:8088/services/collector

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40752749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档