如何使用 LogBack 记录客户端 IP 地址

How to log client IP Address using LogBack

我正在使用 micronaut 1.2.5,我需要记录客户端 IP 地址。

这是我的logback.xml

<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <withJansi>true</withJansi>
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n</pattern>
    </encoder>
</appender>

<root level="info">
    <appender-ref ref="STDOUT" />
</root>

我需要记录客户端IP地址。

我看到最新的docs already have this feature.

i need to log the client ip address.

您可以使用 HttpClientAddressResolver 来解析客户端 IP 地址。

import io.micronaut.http.HttpRequest;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.HttpStatus;
import io.micronaut.http.server.util.HttpClientAddressResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Controller("/demo")
public class DemoController {
    private static final Logger LOG = LoggerFactory.getLogger(DemoController.class);

    private final HttpClientAddressResolver addressResolver;

    public DemoController(HttpClientAddressResolver addressResolver) {
        this.addressResolver = addressResolver;
    }

    @Get("/")
    public HttpStatus index(HttpRequest request) {
        LOG.debug("The client ip address is {}.", addressResolver.resolve(request));
        return HttpStatus.OK;
    }
}