alibaba-archive/aliyun-log-producer-java

关于logGroup的一些问题

Closed this issue · 2 comments

您好,遇到一个问题:
每次保存日志后,我都会调用flush和close方法,随后收到发送日志成功的回调。但是Vector<LogItem> logGroup里的LogItem并不会减少,按我的想法,如果日志A发送成功后,即会删除logGroup里对应的LogItem,但事实上并没有,所以这里不太明白,下面是我的代码:

logProducer.send(aliLogConfig.projectConfig().projectName, logStore, topic, source, logGroup, new CallbackLogInfo(aliLogConfig.projectConfig().projectName, logStore, topic,
                null, source, logGroup, logProducer));
        logProducer.flush();
        try {
            Thread.sleep(1 * 200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        logProducer.close();

补充一下:
我再调用时是这样写的:

public void saveLog(Vector<LogItem> logGroup, String topic, String source) {
        final LogProducer logProducer = aliLogConfig.getLogProducer();
        // 并发调用 send 发送日志
        log.info("producer logs partNo.1:" + "projectName:" +
                aliLogConfig.projectConfig().projectName +
                ", logStore:" + logStore + ", topic:" + topic +
                ", source:" + source);
        for (int i = 0; i < logGroup.size(); i++) {
            log.info("producer logs partNo.2.{} , logStore:{}, logGroup[{}]: {}",
                    i, logStore, i, logGroup.elementAt(i).GetLogContents().get(0).GetValue());
        }
        logProducer.send(aliLogConfig.projectConfig().projectName, logStore, topic, source, logGroup, new CallbackLogInfo(aliLogConfig.projectConfig().projectName, logStore, topic,
                null, source, logGroup, logProducer));
}

在完成send操作的回调会打印:

log.info("send success, request id: " + response.GetRequestId());

我连续调用了三个接口,以下是日志:

.AliLogUtil         : producer logs partNo.1:projectName:openv3-log, logStore:test, topic:open-data-api-v3, source:127.0.0.1
2021-04-19 16:26:21.856  INFO [open-api,607d3eadfaea2368d6da4e3a4fae229e,d6da4e3a4fae229e,true] 25508 --- [nio-8904-exec-2] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.2.0 , logStore:test, logGroup[0]: /v3/module/catagory
2021-04-19 16:26:23.147  INFO [open-api,,,] 25508 --- [pool-2-thread-1] com.kuke.config.log.CallbackLogInfo      : send success, request id: 607D3EAE191E917762535F08


2021-04-19 16:26:37.995  INFO [open-api,607d3ebdce5ce3e1a43118465c3d1272,a43118465c3d1272,true] 25508 --- [nio-8904-exec-1] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.1:projectName:openv3-log, logStore:test, topic:open-data-api-v3, source:127.0.0.1
2021-04-19 16:26:37.995  INFO [open-api,607d3ebdce5ce3e1a43118465c3d1272,a43118465c3d1272,true] 25508 --- [nio-8904-exec-1] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.2.0 , logStore:test, logGroup[0]: /v3/module/catagory
2021-04-19 16:26:37.995  INFO [open-api,607d3ebdce5ce3e1a43118465c3d1272,a43118465c3d1272,true] 25508 --- [nio-8904-exec-1] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.2.1 , logStore:test, logGroup[1]: /v3/channel/module/allList


2021-04-19 16:27:07.137  INFO [open-api,607d3edb7e29bfd2eb3f9df8d1b39fe0,eb3f9df8d1b39fe0,true] 25508 --- [nio-8904-exec-4] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.1:projectName:openv3-log, logStore:test, topic:open-data-api-v3, source:127.0.0.1
2021-04-19 16:27:07.137  INFO [open-api,607d3edb7e29bfd2eb3f9df8d1b39fe0,eb3f9df8d1b39fe0,true] 25508 --- [nio-8904-exec-4] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.2.0 , logStore:test, logGroup[0]: /v3/module/catagory
2021-04-19 16:27:07.137  INFO [open-api,607d3edb7e29bfd2eb3f9df8d1b39fe0,eb3f9df8d1b39fe0,true] 25508 --- [nio-8904-exec-4] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.2.1 , logStore:test, logGroup[1]: /v3/channel/module/allList
2021-04-19 16:27:07.137  INFO [open-api,607d3edb7e29bfd2eb3f9df8d1b39fe0,eb3f9df8d1b39fe0,true] 25508 --- [nio-8904-exec-4] com.kuke.openapi.util.AliLogUtil         : producer logs partNo.2.2 , logStore:test, logGroup[2]: /v3/channel/module/info
2021-04-19 16:27:08.519  INFO [open-api,,,] 25508 --- [pool-2-thread-1] com.kuke.config.log.CallbackLogInfo      : send success, request id: 607D3EDB1AA966C72CC4F82B

观察日志发现,每次send成功后,logGroup里已经send后的logItem仍然存在,不知道是什么原因呢?

各位,在调用发送后,需要手动删除一下对应的日志

logItems.add(logItem);
        aliLogUtil.saveLog(logItems, topic, IpUtil.getRemortIP(request));
        logItems.remove(logItem);