Java Log4J2在appender中设置参数

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()

使用log4j2,我如何配置PatternLayout,使其打印的不仅仅是消息,还包括我发送的Map参数

       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);