logstash包含xml标记的自定义日志

logstash包含xml标记的自定义日志,logstash,grok,Logstash,Grok,我有一个自定义日志文件,它有纯文本和xml标记。如何在单独的字段中捕获这些内容。下面是它的样子: 2017年10月1日上午4:16:35: 引发的错误是: 无误 发送的请求是: SCEO415154712 收到的答复是: SCEO4151547trueTBAfalse7169-1TBA2389-1 2017年10月1日上午4:16:35: 引发的错误是: 无误 *****************************************************************

我有一个自定义日志文件,它有纯文本和xml标记。如何在单独的字段中捕获这些内容。下面是它的样子: 2017年10月1日上午4:16:35: 引发的错误是: 无误


发送的请求是: SCEO415154712


收到的答复是: SCEO4151547trueTBAfalse7169-1TBA2389-1

2017年10月1日上午4:16:35:
引发的错误是:
无误
*************************************************************************
发送的请求是:
SCEO415154712
*************************************************************************
收到的答复是:
SCEO4151547trueTBAfalse7169-1TBA2389-1

*************************************************************************
恐怕这里没有简单的答案。Logstash和其他日志处理工具逐行工作,每行都是一个事件。如果您的事件跨越多行,您可以使用编解码器,这是非常强大的,但根据我的经验,您最好尝试在源代码处将日志放到单行上,这样可以更容易地编写模式并使流程可靠地工作

您在这里遇到的问题很多,但是,例如,如果您的一条消息(通过TCP发送)由于某种原因被重新传输,或者只是(通过UDP发送)丢失,那么您的模式将中断,因为logstash所期望的消息不存在


在我看来,您能做的最好的事情就是尝试并更改日志记录过程,将每个事件作为一行保存到文件中。大多数日志记录工具都应该允许使用正确的配置选项。理想情况下,让您的应用程序以json格式登录(假设您正在处理日志以将其保存在elasticsearch中),这将在logstash服务器上以最低的开销来处理这些日志(因为elasticsearch以json格式保存它们)。然后,您需要做的就是将每个事件/日志行传递给json筛选器,字段由应用程序指定的名称生成。

@Rumbles您能看一下吗?短暂性脑缺血发作