1. 구성에서 로그 수준을 수정합니다.
2. 애플리케이션을 다시 시작합니다.
3. 문제가 발생한 후 문제를 해결하려면 오류 로그를 확인하세요.
이 프로세스에서는 애플리케이션을 다시 시작해야 합니다. 이는 더 번거롭고 효율성이 떨어지며 대규모 온라인 프로젝트의 경우 마음대로 종료하고 다시 시작할 수 없습니다. 그렇다면 애플리케이션을 다시 시작하지 않고 로그 수준을 동적으로 변경하는 방법이 있습니까?
이제 Lao Wan이 SpringBoot의 액추에이터 구성 요소를 통해 로그 수준을 동적으로 수정하는 방법을 가르쳐 드리겠습니다.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
#启用actuator端口 management.endpoints.enabled-by-default=fasle #设置actuator的访问根路径,默认是/actuator management.endpoints.web.base-path=/message #启用的端点 management.endpoints.web.exposure.include=loggers
여기에서는 프로젝트의 기본 액세스 경로와 일관성을 유지하기 위해 Actuator /actuator의 기본 액세스 경로를 /message로 수정했습니다.
방법 1: (권장)
management.endpoints.web.exposure.include=loggers
방법 2: (테스트 시 이 방법은 작동하지 않았습니다.)
management.endpoint.loggers.enabled=true
추가: 정보 포트를 비활성화하는 방법
management.endpoints.enabled-by-default=false management.endpoint.info.enabled=true
액추에이터 구성 요소는 스프링 부트의 4가지 주요 구성 요소 중 하나라고 합니다. 자세한 내용은 인터넷에서 찾을 수 있습니다.
ID | Description | 기본적으로 활성화 |
---|---|---|
auditevents | 현재 애플리케이션의 감사 이벤트 정보 표시 | 예 |
beans | 하나 보여주기 애플리케이션에 있는 모든 Spring Bean의 전체 목록 | Yes |
conditions | 구성 및 자동 구성 클래스의 상태와 적용되거나 적용되지 않는 이유를 표시합니다. | Yes |
configprops | 표시 모든 @ConfigurationProperties의 컬렉션 목록 | Yes |
env | Spring의 ConfigurableEnvironment 속성 표시 | Yes |
flyway | 있는 경우 데이터베이스 마이그레이션 경로 표시 | Yes |
health | 디스플레이 애플리케이션의 상태 정보(인증되지 않은 연결을 사용하여 접근하면 간단한 "상태"가 표시되고, 인증된 연결을 사용하여 접근하면 모든 세부 정보가 표시됨) | Yes |
info | 모든 애플리케이션 정보 표시 | 예 |
liquibase | Liquibase 데이터베이스 마이그레이션 경로가 있는 경우 표시 | 예 |
metrics | 현재 애플리케이션의 메트릭 정보 표시 | 예 |
매핑 | 컬렉션 표시 모든 @requestmapping 경로 목록 | yes |
scheduledtasks | 응용 프로그램의 예약 된 작업 표시 | 예의 세션 |
include
属性列出了公开的端点的ID,
exclude
属性列出了不应该公开的端点的ID
exclude
属性优先于include属性。包含和排除属性都可以使用端点ID列表进行配置。
*可以用来选择所有端点。
例如,要通过HTTP公开除env和beans端点之外的所有内容,请使用以下属性:
management.endpoints.web.exposure.include=* management.endpoints.web.exposure.exclude=env,beans
一般我们会将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() } }
请求链接:http://localhost:8090/message/loggers
注意上面我说过的,我调整了management.endpoints.web.base-path=/message。如果没有设置此参数,则使用默认的/actuator去访问。
这里演示,修改目录com.wxswj.provider.message.controller的日志级别为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
http://localhost:8090/message/loggers/com.wxswj.provider.message.controller
{ "configuredLevel": "DEBUG", "effectiveLevel": "DEBUG" }
说明我们的修改日志级别的请求生效。
위 내용은 로그 수준을 동적으로 수정하는 SpringBoot의 작업은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!