Я решил это следующим образом:
Скопирован исходный код JDBCAppender
с именем ACMEJDBCAppender
переопределяет метод getLogStatement(LoggingEvent event)
, клонируя старое событие и предоставляя новому экранированное сообщение.
Не самое чистое решение с точки зрения oop, но оно делает свою работу. Надеюсь, это поможет.
protected String getLogStatement(LoggingEvent event) {
LoggingEvent clone = new LoggingEvent(
event.fqnOfCategoryClass,
LogManager.getLogger(event.getLoggerName()),
event.getLevel(),
AidaUtils.sqlEscape(event.getMessage().toString()),
event.getThrowableInformation()!=null ? event.getThrowableInformation().getThrowable() : null
);
return getLayout().format(clone);
}