We need some help with the multiline codec.
We have syslog entries arriving - the message lines look like this:
jvm 1 : ERROR [fooHTTP38] [10.1.102.49] [AbstractResource] Error crea
jvm 1 : de.foo.platform.webservices.BadRequestException: Error creati
jvm 1 : at de.foo.platform.webservices.HttpPutResponseBuilder.cre
jvm 1 : Caused by: de.foo.platform.servicelayer.exceptions.ModelSav
jvm 1 : at de.foo.platform.servicelayer.internal.model.impl.wrapp
jvm 1 : at de.foo.platform.servicelayer.internal.model.impl.wrapp
jvm 1 : at de.foo.platform.servicelayer.internal.model.extractor.
jvm 1 : at de.foo.platform.servicelayer.internal.model.impl.Defau
jvm 1 : at de.foo.platform.servicelayer.internal.model.impl.Defau
jvm 1 : at de.foo.platform.servicelayer.internal.model.impl.Defau
jvm 1 : at de.foo.platform.servicelayer.internal.model.impl.Defau
jvm 1 : at de.foo.platform.webservices.AbstractYResource.createOr
jvm 1 : at de.foo.platform.webservices.HttpPutResponseBuilder.cre
jvm 1 : at de.foo.platform.webservices.HttpPutResponseBuilder.cre
jvm 1 : ... 101 more
Each line is logged separately as "INFO" but actually this is one event of type ERROR - the first line is the event and the other lines are multi-lines belonging to the event.
Our first challenge is to parse this with the multiline codec. We have seen that all events start with either ERROR, WARN, INFO, DEBUG etc. We have tried the following in our syslog input section:
codec => multiline {
#Every line which doesn't contain this is a continuation of the previous event:
pattern => "(SEVERE)|(ERROR)|(WARN)|(INFO)|(DEBUG)"
negate => true
what => "previous"
}
This does not work - we get no events in our output although the RegEx is apparently valid.