我想接收json格式的日志消息。我还需要合并日志开始与一个空间(发送stacktraces在同一电子邮件)与以前发现的日志。
从官方网站文档中,对于第一份工作所需的编解码器是"json"。对于第二份工作,所需的编解码器是"multiline"。
如何同时完成这两项工作?
下面是一个日志示例
2014-06-17 14:47:22,490 DEBUG [-] com.tigerit.evr.util.EvrAuthManager (EvrAuthManager.java:61) - User details are good and ready to go
这里是一个例子stacktrace -
com.bea.core.repackaged.springframework.beans.factory.BeanCreationException: Dependency injection failure: can't find the bean definition about class interface javax.jms.Queue; nested exception is com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.jms.Queue] is defined: No beans of type javax.jms.Queue; owner=com.bea.core.repackaged.springframework.context.support.GenericApplicationContext@1364679d: display name [com.bea.core.repackaged.springframework.context.support.GenericApplicationContext@1364679d]; startup date [Wed Jun 18 10:10:36 BDT 2014]; parent: com.bea.core.repackaged.springframework.context.support.GenericApplicationContext@61932006
at com.bea.core.repackaged.springframework.jee.inject.Jsr250Metadata.applyInjections(Jsr250Metadata.java:244)
at com.bea.core.repackaged.springframework.jee.inject.Jsr250Metadata.inject(Jsr250Metadata.java:226)
at com.bea.core.repackaged.springframework.jee.spi.EjbComponentCreatorBrokerImpl.injection(EjbComponentCreatorBrokerImpl.java:112)
at com.bea.core.repackaged.springframework.jee.spi.EjbComponentCreatorBrokerImpl.getBean(EjbComponentCreatorBrokerImpl.java:70)
at weblogic.ejb.container.injection.EjbComponentCreatorImpl.getBean(EjbComponentCreatorImpl.java:68)
at weblogic.ejb.container.manager.BaseEJBManager.createNewBeanInstance(BaseEJBManager.java:216)
我想添加以"at"开头的行,以便与之前的日志消息合并。
您可以对给定的输入使用多个过滤器。例如,您可以像在doc示例中那样使用多行代码来合并堆栈跟踪行:
input {
stdin {
codec => multiline {
pattern => "^s"
what => "previous"
}
}
}
然后在你的配置文件中你可以这样写
filter {
if [message] =~ /^{.*}$/ {
json { source => message }
}
}
因此,如果你得到一行以大括号开始/结束,你可以将该行视为json.