Skip to content

Instantly share code, notes, and snippets.

#just for develop env
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
package com.dvtt.demo.coredemo.filter;
import com.dvtt.demo.coredemo.service.LoggingServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpMethod;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
package com.dvtt.demo.coredemo.config;
import com.dvtt.demo.coredemo.filter.CustomURLFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Created by linhtn on 1/3/2022.
*/
package com.dvtt.demo.coredemo.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by linhtn on 1/3/2022.
*/
public interface LoggingService {
package com.dvtt.demo.coredemo.controller;
import com.dvtt.demo.coredemo.service.LoggingServiceImpl;
import lombok.AllArgsConstructor;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter;
package com.dvtt.demo.coredemo.controller;
import com.dvtt.demo.coredemo.service.LoggingServiceImpl;
import lombok.AllArgsConstructor;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
<configuration>
<property name="LOG_DIR" value="/var/logs/demo/distributed-tracing/handmade" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
</Pattern>
</layout>
</appender>
package com.dvtt.demo.coredemo.context;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LoggingContext {
private String requestId;
}
package com.dvtt.demo.coredemo.thread;
import com.dvtt.demo.coredemo.context.LoggingContext;
public class ThreadContextKeeper {
private static final ThreadLocal<LoggingContext> threadLocalValue = ThreadLocal.withInitial(LoggingContext::new);
public static LoggingContext getRequestAttributes() {
return threadLocalValue.get();
package com.dvtt.demo.coredemo.interceptor;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.util.StreamUtils;