Heim > Java > javaLernprogramm > Wie funktioniert SpringBoot, um die Protokollebene dynamisch zu ändern?

Wie funktioniert SpringBoot, um die Protokollebene dynamisch zu ändern?

WBOY
Freigeben: 2023-05-14 08:25:13
nach vorne
1714 Leute haben es durchsucht

Der herkömmliche Ansatz ist im Allgemeinen:

1. Ändern Sie die Protokollebene in der Konfiguration.

3. Überprüfen Sie das Fehlerprotokoll, um das Problem zu beheben.

Dieser Vorgang erfordert einen Neustart der Anwendung. Dies ist problematischer, weniger effizient und bei großen Online-Projekten ist es unmöglich, sie nach Belieben herunterzufahren und neu zu starten. Gibt es also eine Möglichkeit, die Protokollebene dynamisch zu ändern, ohne die Anwendung neu zu starten?

Lao Wan zeigt Ihnen nun, wie Sie die Protokollebene mithilfe der Aktuatorkomponente von SpringBoot dynamisch ändern. 1. Abhängigkeiten hinzufügen.

Zwei Konfigurationsmethoden zum Aktivieren des Ports:

Methode 1: (Empfohlen)

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Nach dem Login kopieren

Methode 2: (Diese Methode hat beim Testen nicht funktioniert)

#启用actuator端口
management.endpoints.enabled-by-default=fasle
#设置actuator的访问根路径,默认是/actuator
management.endpoints.web.base-path=/message
#启用的端点
management.endpoints.web.exposure.include=loggers
Nach dem Login kopieren

Zusätzlich: So deaktivieren Sie den Info-Port

management.endpoints.web.exposure.include=loggers
Nach dem Login kopieren

Die Aktuatorkomponente wird als eine der vier Hauptkomponenten der Federmanschette bezeichnet. Sie verfügt über leistungsstarke Funktionen, um mehr zu erfahren. Aktuator-Endpunkt-Port-Beschreibung:

ID

Beschreibung

Standardmäßig aktiviertJaJaJaJa JaJa Zuordnungen Zeigt eine Sammlung Liste aller @RequestMapping-Pfade. Ja, geplante Aufgaben. Zeigt geplante Aufgaben in der Anwendung an. Ja tion) Benutzer Sitzungen. Nicht verfügbar, wenn Sie die Unterstützung von Spring Session für reaktive Webanwendungen nutzen. Ja Wenn Sie eine Webanwendung (Spring MVC, Spring WebFlux oder Jersey) verwenden, können Sie auch die folgenden Endpunkte verwenden: IDJaPropertyDefaultmanagement.endpoints.jmx.exposure .exclude*management.endpoints. umfassenInfo, Gesundheit
AuditeventsPrüfereignisinformationen der aktuellen Anwendung anzeigen
BohnenZeige eins Vollständige Liste aller Spring Beans in der Anwendung. Ja eine Sammlungsliste aller @ConfigurationProperties
envZeigt Eigenschaften aus Spring's ConfigurableEnvironment
flywayDatenbankmigrationen anzeigen Pfad, falls vorhanden
GesundheitAnzeige die Gesundheitsinformationen der Anwendung (bei Zugriff über eine nicht authentifizierte Verbindung wird ein einfacher „Status“ angezeigt, und bei Zugriff über eine authentifizierte Verbindung werden alle Informationsdetails angezeigt)
Info Alle Anwendungsinformationen anzeigen
liquibaseZeigen Sie ggf. einen Liquibase-Datenbankmigrationspfad an
Beschreibung Standardmäßig aktiviert
heapdumGibt ein GZip zurück komprimierte hprof-Heap-Dump-Datei Ja
jolokia Macht JMX-Beans über HTTP verfügbar (WebFlux ist nicht verfügbar, wenn Jolokia im Klassenpfad ist) Ja
logfile Gibt den Inhalt der Protokolldatei zurück (bei Protokollierung). Datei oder Protokollierung ist auf das .path-Attribut festgelegt), unterstützt die Verwendung des HTTP-Range-Headers, um Teilinformationen des Protokolldateiinhalts zu erhalten
Zu ändern Um zu bestimmen, welche Endpunkte verfügbar gemacht werden, verwenden Sie die folgenden technologiespezifischen Einschluss- und Ausschlusseigenschaften:

include属性列出了公开的端点的ID,

exclude属性列出了不应该公开的端点的ID

exclude属性优先于include属性。包含和排除属性都可以使用端点ID列表进行配置。

*可以用来选择所有端点。

例如,要通过HTTP公开除env和beans端点之外的所有内容,请使用以下属性:

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
Nach dem Login kopieren

三、关闭鉴权

一般我们会将actuator和spring security鉴权组件结合使用,防止这些功能端口被随便调用。由于这里是功能演示,先放开actuator相关端口的权限认证。

Wie funktioniert SpringBoot, um die Protokollebene dynamisch zu ändern?

此外,如果存在Spring Security,则需要添加自定义安全配置,以允许对端点进行未经身份验证的访问,如以下示例所示:放开所有Endpoint端点进行匹配

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

}
Nach dem Login kopieren

四 、通过/loggers端口查看日志级别

请求链接:http://localhost:8090/message/loggers

注意上面我说过的,我调整了management.endpoints.web.base-path=/message。如果没有设置此参数,则使用默认的/actuator去访问。

Wie funktioniert SpringBoot, um die Protokollebene dynamisch zu ändern?

五、发起http请求修改日志级别

这里演示,修改目录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
Nach dem Login kopieren

大家可以在服务器上通过curl发起http请求,或者通过Postman发起请求。

curl -H "Content-Type: application/json" -X POST --data "{"configuredLevel": "DEBUG"}" http://localhost:8090/loggers/com.wxswj.provider.message.controller
Nach dem Login kopieren

六、查询日志级别修改结果

http://localhost:8090/message/loggers/com.wxswj.provider.message.controller

{
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
}
Nach dem Login kopieren

说明我们的修改日志级别的请求生效。

Das obige ist der detaillierte Inhalt vonWie funktioniert SpringBoot, um die Protokollebene dynamisch zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage