Java Log4J2在appender中设置参数
使用log4j2,我如何配置PatternLayout,使其打印的不仅仅是消息,还包括我发送的Map参数Java Log4J2在appender中设置参数,java,log4j,log4j2,Java,Log4j,Log4j2,使用log4j2,我如何配置PatternLayout,使其打印的不仅仅是消息,还包括我发送的Map参数 void info(String message, Object... params); 这是我的密码 Map<String, String> params = new HashMap<>(); params.put(REMOTE_HOST, request.remoteAddress()
void info(String message, Object... params);
这是我的密码
Map<String, String> params = new HashMap<>();
params.put(REMOTE_HOST, request.remoteAddress()
.toString());
params.put(URI, request.uri());
params.put(METHOD, request.method()
.toString());
params.put(REMOTE_HOST, request.remoteAddress()
.toString());
params.put(REFERER, request.headers()
.get(HttpHeaders.REFERER));
params.put(USER_AGENT, request.headers()
.get(HttpHeaders.USER_AGENT));
params.put(STATUS_CODE, Integer.toString(response.getStatusCode()));
params.put(RESPONSE_CONTENT_LENGTH, response.headers()
.get(HttpHeaders.CONTENT_LENGTH));
params.put(TIME, getTime(start, getNano));
log.info(request.absoluteURI(), params);
您可以使用格式字符串:
log.info("URI: {}, parameters: {}", request.absoluteURI(), params);
在代码中,URI被视为格式字符串,但由于它没有占位符,因此它只打印URI并忽略参数。查看
log4j2
消息
对象库。它包含一些方法,这些方法被设计用来消化Map
对象。这很好,我可以将MessageMap用于参数,但文档中没有解释如何在log4j2.xml中配置appender,并且仍然没有显示任何参数。知道吗?不,坦白说,我只使用Log4j2来记录格式化字符串,而不是映射对象。我只是知道现有的方法。对不起,保罗,不用担心,谢谢!
2016-08-04 15:57:32.288 [vert.x-eventloop-thread-0] INFO requestLog - http://localhost:8080/v4/quote
log.info("URI: {}, parameters: {}", request.absoluteURI(), params);