另一種方法是創建自定義LogEventFactory
。 A LogEventFactory
用於生成LogEvents。應用程序可以通過將系統屬性Log4jLogEventFactory
的值設置爲自定義LogEventFactory類的名稱來替換標準LogEventFactory
。
將被調用,以創建一個LogEvent
實例的方法如下:
LogEvent createEvent(String loggerName,
org.apache.logging.log4j.Marker marker,
String fqcn,
org.apache.logging.log4j.Level level,
org.apache.logging.log4j.message.Message data,
List<Property> properties,
Throwable t)
和DefaultLogEventFactory
是log4j的基本實現。在你的情況下,你可以擴展基本實現,並在你調用默認實現之後轉義消息。它會成爲像這樣:
public class MyCustomLogEventFactory extends DefaultLogEventFactory {
/**
* Creates a log event.
*
* @param loggerName The name of the Logger.
* @param marker An optional Marker.
* @param fqcn The fully qualified class name of the caller.
* @param level The event Level.
* @param data The Message.
* @param properties Properties to be added to the log event.
* @param t An optional Throwable.
* @return The LogEvent.
*/
@Override
public LogEvent createEvent(final String loggerName, final Marker marker,
final String fqcn, final Level level, final Message data,
final List<Property> properties, final Throwable t) {
super.createEvent(loggerName, marker, fqcn, level, StringEscapeUtils.escapeJava(data != null ? data.toString() : null), properties, t);
}
}
我沒有看到DefaultLogEventFactory – gstackoverflow
這是在'log4j的 – uniknow
的org.apache.logging.log4j.core.impl' 2.x版本我用1.2.17版本 – gstackoverflow