Maintain access log

Access log can be enabled by performing two steps.

Netty server

Netty access logs are disabled by default. To enable them a system parameter must be passed when starting the application.

java -Dreactor.netty.http.server.accessLogEnabled=true -jar application.jar

It also can be set within the code right before Spring application is started.

ExampleApplication.java
@SpringBootApplication
public class ExampleApplication {

  public static void main(String[] args) {
    System.setProperty("reactor.netty.http.server.accessLogEnabled", "true");
    SpringApplication.run(ExampleApplication.class, args);
  }

}

Logger configuration

Now that access logs are enabled they have to be persisted in a file. Proper logback configuration will handle that.

ExampleApplication.java
<configuration>
    <appender name="accessLog" class="ch.qos.logback.core.FileAppender">
        <file>access_log.log</file>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="accessLog" />
    </appender>

    <logger name="reactor.netty.http.server.AccessLog" level="INFO" additivity="false">
        <appender-ref ref="async"/>
    </logger>
</configuration>