마이크로서비스 개발에서 로깅은 매우 기본적인 작업으로, 인터페이스 요청 로그 정보를 기록하여 문제를 해결하고 재현하는 데 도움을 줍니다. 로그 내용에는 링크, 요청 방법, useragent, 헤더, 현재 마이크로서비스 노드 머신 IP, 노드 머신 이름, 실행 환경, 요청자 IP, 시간 소비 및 기타 정보가 포함됩니다.
Spring Cloud 프레임워크의 필터 블로커를 사용하면 모든 인터페이스의 요청 정보 레코드를 가로채고 MongoDB에 요청 레코드를 영속성할 수 있습니다.
인터페이스 로그 구조
먼저, 새 객체를 만들고 로그의 구조를 정의하세요. 코드는 다음과 같습니다:
로그 필터
새로운 RequestLoggerFilter 필터를 만들고 필터 인터페이스를 상속한 후 doFilter 메서드를 구현하세요. 이 필터가 가장 높은 우선순위를 가지며, @Order 주석을 통해 필터 우선순위를 설정할 수 있습니다.필터는 POST/PUT 커밋을 기록합니다(multipart/form-data 파일 커밋 레코드는 제외), 코드는 다음과 같습니다:
로그는 MongoDB에 저장됩니다
인터페이스의 정상적인 사용에 영향을 주지 않기 위해, 인터페이스 로그는 스레드 안전 큐에 버려지고, 프로그램은 스레드를 열며, 스레드는 큐 내 데이터를 소비하고 MongoDB에 저장하며, maven을 사용해 의존성을 도입합니다.
mongodb에 대한 자세한 내용은 org.springframework.boot.autoconfigure.mongo.MongoProperties를 참조하세요.
application.yml 구성은 다음과 같습니다:
URI 형식: 사용자 이름: root, 비밀번호: aaaaaaa, 데이터베이스 주소: 127.0.0.1, 포트 번호: 27017, 데이터베이스명: test. 예를 들어: mongodb://root:aaaaaa@127.0.0.1:27017/test
면사용자 이름이나 비밀번호에는 특별한 기호가 포함되어 있으니 URL 인코딩을 사용하세요, 그렇지 않으면 오류가 보고됩니다!
다음 코드로 MongoTemplate을 호출하여 데이터를 데이터베이스에 영제화하세요:
(끝)
|