SpringBoot 동적 수정 로그 단계 작업

머리말
로그 의 잦 은 인쇄 에 따 른 성능 영향 을 줄 이기 위해 온라인 환경 설정 의 로그 단 계 는 일반적으로 상대 적 으로 높다.생산 문제 가 발생 하여 조사 가 필요 할 때 로그 등급(예 를 들 어 DEBUG)을 적 절 히 낮 추어 더 많은 로그 정 보 를 인쇄 하여 포 지 셔 닝 문 제 를 해결 해 야 할 수도 있 습 니 다.
전통 적 인 방법 은 일반적으로:
1.설정 에서 로그 단 계 를 수정 합 니 다.
2.응용 프로그램 재 부팅
3.문제 재현 보기 오류 로그 조사 문제
이 과정 은 응용 프로그램 을 다시 시작 해 야 하기 때문에 비교적 번 거 롭 고 효율 이 낮 으 며 대형 온라인 프로젝트 에 대해 함부로 정지 하고 다시 시작 할 수 없다.그렇다면 애플 리 케 이 션 을 다시 시작 하지 않 고 동적 으로 로그 단 계 를 수정 하 는 방법 은 없 을 까?
다음은 만 씨 에 게 SpringBoot 의 actuator 구성 요 소 를 통 해 로그 단 계 를 동적 으로 수정 하 는 방법 을 알려 드 립 니 다.
의존 추가

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.actuator 노출 포트 설정

#  actuator  
management.endpoints.enabled-by-default=fasle
#  actuator      ,   /actuator
management.endpoints.web.base-path=/message
#     
management.endpoints.web.exposure.include=loggers
여기 서 저 는 actuator 의 기본 접근 경로/actuator 를 수정 하 였 습 니 다./message 로 바 꾸 었 습 니 다.프로젝트 의 기본 접근 경로 와 일치 하기 위해 서 입 니 다.
포트 의 2 중 설정 방법 사용 하기:
방식 1:(추천)

management.endpoints.web.exposure.include=loggers
방식 2:(이런 방식 의 테스트 는 유효 하지 않 습 니 다)

management.endpoint.loggers.enabled=true
추가:info 포트 를 사용 하지 않 는 방법

management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true
actuator 구성 요 소 는 spring boot 라 고 불 리 는 4 대 구성 요소 중 하나 로 기능 이 강하 기 때문에 인터넷 에서 스스로 자 료 를 찾 아 더 알 아 보 세 요.
actuator 의 endpoint 포트 설명:
ID
묘사 하 다.
기본 사용
auditevents
현재 프로그램의 감사 이벤트 정 보 를 표시 합 니 다.
Yes
beans
모든 Spring Beans 의 전체 목록 보이 기
Yes
conditions
설정 클래스 와 자동 설정 클래스(configuration and auto-configuration classes)의 상태 및 적용 되 거나 적용 되 지 않 은 이 유 를 표시 합 니 다.
Yes
configprops
모든@ConfigurationProperties 의 집합 목록 을 표시 합 니 다.
Yes
env
Spring 에서 온 Configurable Environment 속성 표시
Yes
flyway
데이터베이스 이전 경 로 를 표시 합 니 다.있 으 면
Yes
health
응용 프로그램의 건강 정 보 를 표시 합 니 다(인증 되 지 않 은 연결 접근 을 사용 할 때 간단 한'status'를 표시 하고 인증 연결 접근 을 사용 하면 모든 정 보 를 표시 합 니 다)
Yes
info
임의의 응용 정보 보이 기
Yes
liquibase
Liquibase 데이터베이스 이전 경 로 를 보 여 줍 니 다.있 으 면...
Yes
metrics
현재 응용 중인 metrics 정 보 를 보 여 줍 니 다.
Yes
mappings
모든@RequestMapping 경 로 를 보 여 주 는 집합 목록
Yes
scheduledtasks
프로그램의 계획 작업 보이 기
Yes
sessions
Spring 세 션 이 지원 하 는 세 션 저장 소 에서 사용자 세 션 을 검색 하고 삭제 할 수 있 습 니 다.반응 성 웹 프로그램 에 대한 Spring Session 지원 을 사용 할 때 사용 할 수 없습니다.
Yes
shutdown
우아 한 방식 으로 닫 을 수 있 도록 합 니 다(기본 값 으로 사용 하지 않 음)
No
threaddump
스 레 드 dump 실행
Yes
웹 애플 리 케 이 션(Spring MVC,Spring WebFlux 또는 Jersey)을 사용 하면 다음 단 서 를 사용 할 수 있 습 니 다.
ID
묘사 하 다.
기본 사용
heapdum
압축 된 hprof 덤 프 파일 을 되 돌려 줍 니 다.
Yes
jolokia
HTTP 를 통 해 JMX beans 노출(Jolokia 가 클래스 경로 에 있 을 때 WebFlux 를 사용 할 수 없습니다)
Yes
logfile
로그 파일 내용 을 되 돌려 줍 니 다(logging.file 또는 logging.path 속성 이 설정 되 어 있다 면).HTTP Range 헤드 로 로그 파일 내용 의 일부 정 보 를 받 을 수 있 습 니 다.
Yes
prometheus
Prometheus 서버 에서 캡 처 할 수 있 는 형식 으로 metrics 정 보 를 표시 합 니 다.
Yes
어떤 점 을 공개 하 는 지 변경 하려 면 아래 기술 의 특정한 include 와 exclude 속성 을 사용 하 십시오.
Property
Default
management.endpoints.jmx.exposure.exclude
*
management.endpoints.jmx.exposure.include
*
management.endpoints.web.exposure.exclude
*
management.endpoints.web.exposure.include
info, healthinclude 속성 은 공 개 된 점 의 ID 를 보 여 줍 니 다.exclude 속성 은 공개 하지 말 아야 할 점 의 ID 를 보 여 줍 니 다.exclude 속성 은 include 속성 보다 우선 합 니 다.속성 포함 및 제거 모두 터미널 ID 목록 으로 설정 할 수 있 습 니 다.
*모든 점 을 선택 할 수 있 습 니 다.
예 를 들 어 env 와 beans 점 을 제외 한 모든 내용 을 HTTP 를 통 해 공개 하려 면 다음 속성 을 사용 하 십시오.

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
3.감 권 폐쇄
일반적으로 저 희 는 actuator 와 spring security 감 권 구성 요 소 를 결합 하여 사용 하여 이러한 기능 포트 가 임의로 호출 되 는 것 을 방지 합 니 다.기능 프 리 젠 테 이 션 이기 때문에 먼저 actuator 관련 포트 의 권한 인증 을 놓 습 니 다.

또한 Spring Security 가 존재 한다 면 터미널 에 인증 되 지 않 은 접근 을 허용 하기 위해 사용자 정의 보안 설정 을 추가 해 야 합 니 다.다음 예제 와 같이 모든 Endpoint 터미널 을 놓 고 일치 하도록 합 니 다.

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
 
@Override
protected void configure(HttpSecurity http) throws Exception {
    http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
    .anyRequest().permitAll()
}

}
4./loggers 포트 를 통 해 로그 단 계 를 봅 니 다.
요청 링크:http://localhost:8090/message/loggers
위 에서 말 한 것 을 주의 하 세 요.저 는 management.endpoints.web.base-path=/message 를 조정 하 였 습 니 다.이 인자 가 설정 되 어 있 지 않 으 면 기본/actuator 를 사용 하여 접근 합 니 다.
在这里插入图片描述
5.http 요청 로그 단계 수정
디 렉 터 리 com.wxswj.provider.message.contrller 의 로그 단 계 를 debug 로 수정 하 는 것 을 보 여 줍 니 다.
요청 형식 은 POST 이 고 매개 변수 형식 은 JSON 입 니 다.

curl -H "Content-Type: application/json" -X POST --data 
'
{
    "configuredLevel": "DEBUG"
}
' 
http://localhost:8090/message/loggers/com.wxswj.provider.message.controller
서버 에서 curl 을 통 해 http 요청 을 하거나 Postman 을 통 해 요청 을 할 수 있 습 니 다.

curl -H "Content-Type: application/json" -X POST --data '{"configuredLevel": "DEBUG"}' http://localhost:8090/loggers/com.wxswj.provider.message.controller
6.로그 단계 수정 결과 조회
http://localhost:8090/message/loggers/com.wxswj.provider.message.controller

{
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
}
로그 단 계 를 수정 하 라 는 요청 이 적 용 됩 니 다.
총결산
spring boot 의 actuator 구성 요 소 를 통합 하여 해당 하 는/loggers 포트 를 공개 하면 프로젝트 를 다시 시작 하지 않 고 동적 으로 시스템 의 로그 단 계 를 조정 할 수 있 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기