Skip to content

making/access-logger

Repository files navigation

access-logger

Access Logger as a HttpExchangeRepository implementation

<dependency>
	<groupId>am.ik.access-logger</groupId>
	<artifactId>access-logger</artifactId>
	<version>0.3.2</version>
</dependency>
<!-- Spring Boot Actuator is also required -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Example

import am.ik.accesslogger.AccessLogger;
import am.ik.accesslogger.AccessLoggerBuilder;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class AppConfig {

	@Bean
	public AccessLogger accessLogger() {
		return AccessLoggerBuilder.accessLogger().filter(httpExchange -> {
			final String uri = httpExchange.getRequest().getUri().getPath();
			return uri != null && !(uri.equals("/readyz") || uri.equals("/livez") || uri.startsWith("/actuator"));
		}).build();
	}

}

Note

AccessLoggerBuilder is available since 0.3.0

By deafult, only request_headers, response_headers and time_taken are recorded. In order to log all attributes, you also need to configure management.httpexchanges.recording.include as follows:

management.httpexchanges.recording.include=request_headers,response_headers,remote_address,principal,time_taken

How to customize

AccessLogger accessLogger = AccessLoggerBuilder.accessLogger()
	// Change the log level
	.level(Level.INFO) // Default: INFO
	// Change the logger name
	.loggerName("accesslog") // Default: accessLog
	// Enable structured logging via SLF4J key-value API
	.addKeyValues(true) // Default: false
	// Make log messages empty if structured logging is enabled
	.emptyLogMessage(true) // Default: false
	// Customize log message
	.logCustomizer((builder, exchange) -> {})
	// Customize logging Event
	.loggingEventCustomizer((builder, exchange) -> builder)
	// Filter the log message depending on the http request
	.filter(httpExchange -> {
		final String uri = httpExchange.getRequest().getUri().getPath();
		return uri != null && !(uri.equals("/readyz") || uri.equals("/livez") || uri.startsWith("/actuator"));
	})
	.build();

About

Access Logger as a HttpExchangeRepository implementation

Resources

License

Stars

Watchers

Forks

Packages

No packages published