Okay, so you've got some config mismatch. BREAK_ONLY_BEFORE is only applicable if SHOULD_LINEMERGE=true , which it isn't. When you have that set to false you want to use LINE_BREAKER to tell it how to break events. Also, both BREAK_ONLY_BEFORE and LINE_BREAKER take regex expressions, so what you have would not match what you intend. I would start with something like this:
[DumbApp:ActLogs]
KV_MODE = xml
SHOULD_LINEMERGE = false
LINE_BREAKER = ([\r\n]+)(?:<\?xml)
MAX_EVENTS = 100000
If these XML segments are one per file, then another option is to set your LINE_BREAKER to something that will never appear.
You will also want to tell splunk where to find the timestamp in your event. I'm not sure which of the different time values you want to use, so I'll just say you want to set the following: TIME_PREFIX , TIME_FORMAT , and MAX_TIMESTAMP_LOOKAHEAD
Finally, depending on how these logs are written, you may run into other issues:
If the xml is not written in one shot, Splunk may get confused as it will see the modtime update, read the file, and grab the partially written logs.
If blocks are injected into the XML schema, it will wreak havoc. (Think a XML schema where events are inserted into it as time goes on, so the end of the block keeps getting pushed down instead of appending) Splunk will keep re-reading the entire file when it encounters this.
If you have one file per event, and a lot of events are generated, this will result in Splunk tracking a LOT of files unnecessarily. (They will never be appended once written, so tracking them is unneccesary) In the event this becomes a problem, you may want to investigate the [BATCH://...] inputs. This will ingest the file and delete it when done. Keep in mind it is destructive, so may not fit your use case.
... View more