我写了一个logstash程序,将一些消息发布到URL。 logstash没有错误,但我想知道有没有办法从url捕获我们使用http输出插件发布的内容?
public static byte[] ConcatenatePdfs(IEnumerable<byte[]> documents)
{
using (var ms = new MemoryStream())
{
var outputDocument = new Document();
var writer = new PdfCopy(outputDocument, ms);
outputDocument.Open();
foreach (var doc in documents)
{
var reader = new PdfReader(doc);
for (var i = 1; i <= reader.NumberOfPages; i++)
{
writer.AddPage(writer.GetImportedPage(reader, i));
}
writer.FreeReader(reader);
reader.Close();
}
writer.Close();
outputDocument.Close();
var allPagesContent = ms.GetBuffer();
ms.Flush();
return allPagesContent;
}
}
我已经阅读了文档,但我没有发现任何事情。 如果这是一个愚蠢的问题,请原谅我。
答案 0 :(得分:1)
没有愚蠢的问题; - )
不幸的是,没有办法从http
输出插件中获得任何响应。如果您获得状态代码为<200
或>299
的HTTP响应,或者在呼叫期间出现异常(例如因为远程服务器已关闭),它将仅记录错误。
之所以这样做是因为无论如何都无法使用响应,因为输出是任何Logstash管道中的最后一步,输出不会相互通信。
你需要的是一个HTTP过滤器插件,一个在输入之后和输出之前执行的插件。你很幸运,因为有一个这样的,并在https://github.com/elastic/logstash/issues/3489
中描述弹性/ logstash人员已经认识到需要这个,并且正在开发generic lookup filter而不仅仅是HTTP。