gst*_*low 5 java logging log4j escaping pattern-layout
我有以下PatternLayout:
public class EscapedEnhancedPatternLayout extends EnhancedPatternLayout {
@Override
public String format(LoggingEvent event) {
return StringEscapeUtils.escapeJava(super.format(event));
}
}
Run Code Online (Sandbox Code Playgroud)
但这会逃脱完整的日志行.
我希望有这样的东西,但仅限于消息.
但是LoggingEvent班级没有setMessage和setRenderedMessage方法.
而且我没有看到复制构造函数LoggingEvent.如果LoggingEvent有复制构造函数我可以继承LoggingEvent并覆盖下面提到的方法.
请告诉我如何解决我的问题.
小智 0
你是对的,没有LoggingEvent(LoggingEvent other)构造函数,但您可以将事件的值传递给方法中的LoggingEvent 构造函数,format如下所示:
@Override
public String format(LoggingEvent event) {
Object msgObj = event.getMessage();
LoggingEvent newEvent = new LoggingEvent(
event.getFQNOfLoggerClass(),
event.getLogger(), event.getTimeStamp(),
event.getLevel(),
StringEscapeUtils.escapeJava(msgObj != null ? msgObj.toString() : null),
event.getThreadName(),
event.getThrowableInformation(),
event.getNDC(),
event.getLocationInformation(),
event.getProperties());
return super.format(newEvent);
}
Run Code Online (Sandbox Code Playgroud)
LoggingEvent这将从旧值创建一个新值并设置所有值。该StringEscapeUtils.escapeJava方法现在可以修改message而不影响其他属性,您仍然可以使用super.format
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |