首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >splunk logback/log4j appender似乎不记录splunk

splunk logback/log4j appender似乎不记录splunk
EN

Stack Overflow用户
提问于 2017-10-17 22:17:22
回答 2查看 2.1K关注 0票数 1

我需要使用Java8运行时从AWS登录到splunk。它使用了spring框架,我在项目中添加了logback splunk appender。没有错误,日志似乎没有出现在splunk中。splunk管理员提到在splunk服务器上没有收到任何请求。当我尝试手动调用REST时,日志显示在splunk中。所以从AWS Lambda到splunk服务器的连接是很好的。splunk appender似乎以异步方式调用API,我在AWS代码的末尾添加了50秒睡眠,以查看在异步步骤完成之前是否存在VM退出问题。还没有运气。如何进一步调试?

代码片段:-

代码语言:javascript
复制
public class LambdaApp implements RequestHandler<String, Object>
{
    private static final Logger LOGGER = LoggerFactory.getLogger(LambdaApp.class);
    private static final Logger SPLUNK_LOGGER = LoggerFactory.getLogger("splunk.logger");

    @Override
    public Object handleRequest(String event, Context context)
    {

        SPLUNK_LOGGER.info("AWS Lambda start");
        try {
            Thread.sleep(50000);
        } catch(InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        return "handled";
    }

Maven依赖项:-

代码语言:javascript
复制
<dependency>
         <groupId>com.splunk.logging</groupId>
         <artifactId>splunk-library-javalogging</artifactId>
         <version>1.5.2</version>
</dependency>

Logback配置:-

代码语言:javascript
复制
<appender name="http" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
    <url>https://a.b.c.d:8088</url>
    <token>valid-token</token>
    <disableCertificateValidation>true</disableCertificateValidation>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>{%msg}</pattern>
    </layout>
</appender> 

<logger name ="splunk.logger" level="DEBUG">
      <appender-ref ref="http" />
   </logger>
EN

回答 2

Stack Overflow用户

发布于 2017-10-18 07:54:08

第一步是添加batch_size_count,以排除与HttpEventCollectorLogbackAppender无关的任何问题。

代码语言:javascript
复制
<appender name="http" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
    <url>https://a.b.c.d:8088</url>
    <token>valid-token</token>
    <batch_size_count>1</batch_size_count>
    <disableCertificateValidation>true</disableCertificateValidation>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>{%msg}</pattern>
    </layout>
</appender> 

您还应该验证您是否在接收端使用Splunk 6.3+,因为至少需要v6.3。

票数 0
EN

Stack Overflow用户

发布于 2022-11-10 16:37:43

您必须指定一个有效的/现有的Splunk索引,否则日志条目将悄悄地放在地板上。

batch_size_count设置为1将确保每个日志条目都被刷新。不幸的是,所有东西都是异步编写的,不管您如何配置它(尽管“顺序”是默认的sendMode),所以刷新并不足以确保它实际上是刷新的。为此,您需要将terminationTimeout设置为“足够长”的值(以毫秒为单位),但不要太长以显着地影响lambda。

请注意,terminationTimeout应用于每次刷新,而不仅仅是在他们认为是“终止”的时候。他们还使用繁忙的轮询来实现它。它显然是由一些人实现的,他们并不真正了解如何编写多线程代码,也不知道线程每隔几毫秒旋转一次以轮询另一个线程的状态的含义。

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

https://stackoverflow.com/questions/46800065

复制
相关文章

相似问题

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