У меня была похожая проблема, и я решил ее, используя формат JSON, который, хотя texttual по-прежнему, возможно, быстрее и проще для обработки, чем XML.
В log4j.properties я установил следующий формат:
log4j.appender.A1.layout.ConversionPattern = {"time":"%d", "msg": %m},%n
, что делает его действительным JSON, а само сообщение также является объектом JSON, например:
myLogger.info("{...the contents of the object...}")
В моем случае содержимое сообщения создается из объекта Java с использованием сериализатора Jackson,вот так:
static ObjectMapper MAPPER= new ObjectMapper();
MAPPER.writeValueAsString(myObject);
Полученные файлы журналов могут быть обработаны с любой проблемой, которая понимает JSON, его просто нужно обернуть в
[ <<file contents>>, {}]