Spring DebugInterceptor: AOP jälgimise logimine arenduseks
Avaldatud:
Uuendatud:
Artiklid › Spring DebugInterceptor: AOP jälgimise logimine arenduseks
Olukord 2026. aastal ja ohutu kasutamine
Järeldus: Springi DebugInterceptor on proxy-põhine AOP-interceptor, mis logib meetodikutsete üksikasju TRACE-tasemel. See on mõeldud silumiseks, mitte tootmiskeskkonna üldiseks jälgitavuslahenduseks.
Mida õpid
- Kuidas advisor valib meetodid ja seob interceptori sobivate Springi beanidega.
- Miks võivad self-invocation ja väljaspool Springi containerit loodud objektid proxy advice'ist mööda minna.
- Kuidas vältida argumentide, isikuandmete, mandaatide või liigse logimahu paljastamist.
Kellele artikkel on mõeldud: Springi arendajatele, kes haldavad XML-iga konfigureeritud rakendust või õpivad klassikalist proxy-põhist AOP-d.
Olukord 2026. aastal: klass on praeguses Spring Frameworki dokumentatsioonis endiselt olemas, kuid allolev Spring 5.1.4 XML-i näide on ajalooline. Kasutage toetatud Spring rida, piirake TRACE logimist kontrollitud diagnostikaga ja eelistage tootmistoimingute jaoks praeguseid mõõdikuid, jälgimist ja struktureeritud logimist.
Ohutusmärkus: Algse artikli käske ja seadistusnäiteid ei ole tänapäevases tootmiskeskkonnas uuesti käivitatud. Enne rakendamist kontrolli toetatud versioone, tee varukoopia ja valmista eraldi testkeskkonnas ette tagasipööramise plaan.
Ametlikud allikad
Ülevaade
See räägib sellest, kuidas kasutada Springi DebugInterceptorit. Järgnev Springi veebileht aitas mul kontseptsioonist aru saada, kuid ainuüksi veebilehe põhjal oli raske aru saada, mida täpselt teha, nii et ma tegelikult kontrollisin tulemusi.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api
Sisukord
1. Mis on DebugInterceptor?
DebugInterceptor on raamatukogu, mis väljastab logisid AOP abil. Täpsemalt, järgmised raamatukogud (JAR-failid). Versioon 5.1.4.
https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.4.RELEASE
Konkreetne Java-fail on "org.springframework.aop.interceptor.DebugInterceptor".
Lühidalt öeldes on AOP tehnika töötlemise süstimiseks Springi DI-konteineris hallatavatesse instantsidesse. AOP ametlik nimetus on Aspect Oriented Programming (aspektipõhine programmeerimine).
Sellisel juhul tahame süstida DebugInterceptori instantsi, mis genereeritakse @Componentiga.
1-1. rakenduskeskkond
Sooviksin kirjeldada kasutatud Jar'i ja versiooni, kuna sõltuvalt keskkonnast võivad olla väikesed erinevused.
| Kevadine aop versioon | spring-aop-5.1.4.RELEASE.jar |
|---|---|
| Kevadiste ubade versioon | spring-beans-5.1.4.RELEASE.jar |
| Logi väljundraamatukogu versioon | slf4j-api-1.7.25.jar logback-core-1.2.3.jar |
1-2. Vajalik töö.
Vajalik töö on järgmine.
- Loo instants koos @Componentiga.
- AOP määratlemine failis applicationContext.xml
- Logi väljundi seadete muutmine
2. paigaldus
Nüüd tahaksin seda praktikas rakendada.
2-1. Loo instants koos @Componentiga.
Valmistage klass, mille "@Component" on deklareeritud järgmiselt. Täitke ainult 'return', kuna soovite näha ainult AOP-i.
@Component
public class TestAop{
public void testMethod() {
return;
}
}
2-2. AOP määratlemine failis applicationContext.xml
Seadistage AOP protsessi süstimiseks. Punase värviga on märgitud need valdkonnad, mis on AOP-ga seotud.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
~lühendamine~
<!-- Kevadine AOP testimine. -->
<bean id="debugInterceptor" class="org.springframework.aop.interceptor.DebugInterceptor" />
<aop:config>
<aop:advisor advice-ref="debugInterceptor"
pointcut="execution(* com.example.TestAop.testMethod(..))" />
</aop:config>
</beans>
'pointcut' on kirjutatud järgmiselt.
pointcut="execution(* paketi nimi.klassi nimi.meetodi nimi(.).)"
Ülaltoodud näites oleks see järgmine.
·paketi nimi:com.example
·klassi nimi:TestAop
·meetodi nimi:testMethod
Kui soovite seda kohaldada kõigi meetodite suhtes, kehtib järgmine.
·pointcut="execution(* com.example.TestAop.*(.).)"
2-3. Logi väljundi seadete muutmine
Muutke logimise taset ainult DebugInterceptori jaoks, kuna DebugInterceptori kirjeldatud logiväljundi tase on "TRACE". Punase värviga on need alad, mis tuleb määrata. Ülejäänud seaded saab sisestada suvaliselt.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern><![CDATA[date:%d{yyyy-MM-dd HH:mm:ss}\tthread:%thread\tX-Track:%X{X-Track}\tlevel:%-5level\tlogger:%-48logger{48}\tmessage:%msg%n]]></pattern>
</encoder>
</appender>
<appender name="APPLICATION_LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${app.log.dir:-log}/todo-application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${app.log.dir:-log}/todo-application-%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern><![CDATA[date:%d{yyyy-MM-dd HH:mm:ss}\tthread:%thread\tX-Track:%X{X-Track}\tlevel:%-5level\tlogger:%-48logger{48}\tmessage:%msg%n]]></pattern>
</encoder>
</appender>
<logger name="org.springframework.aop.interceptor" level="trace">
<appender-ref ref="STDOUT" />
<appender-ref ref="APPLICATION_LOG_FILE" />
</logger>
<root level="warn">
<appender-ref ref="STDOUT" />
<appender-ref ref="APPLICATION_LOG_FILE" />
</root>
</configuration>
Ma vaatasin selle loomisel mõnede teiste inimeste blogisid ja mõned väitsid, et väljund tuleks väljastada logi tasemel DEBUG, kuid "spring-aop-5.1.4.RELEASE.jar" puhul tundub, et väljundit ei väljastata, kui see ei ole logi tasemel TRACE.
Kui konfiguratsioon peaks toimima, kuid mingil põhjusel ei väljastata logisid, proovige muuta logide tase TRACE-ks.
2-4. Tulemus.
Kui te kutsute TestAop.java faili testMethod ülaltoodud seadistustega, peaks väljundiks olema järgmine logi. Logi on pikk, nii et ma kustutasin mõned read, kuid see peaks väljastama kaks rida iga sisenemise ja väljumise kohta, kokku neli rida.
date:2021-01-18 15:26:35 thread:http-nio-8081-exec-3 X-Track:84b8ab0aa6504352a815ce85167a1981 level:TRACE logger:o.s.aop.interceptor.DebugInterceptor message:Entering ReflectiveMethodInvocation
date:2021-01-18 15:26:35 thread:http-nio-8081-exec-3 X-Track:84b8ab0aa6504352a815ce85167a1981 level:TRACE logger:o.s.aop.interceptor.DebugInterceptor message:Entering ReflectiveMethodInvocation
date:2021-01-18 15:26:40 thread:http-nio-8081-exec-3 X-Track:84b8ab0aa6504352a815ce85167a1981 level:TRACE logger:o.s.aop.interceptor.DebugInterceptor message:Exiting ReflectiveMethodInvocation
date:2021-01-18 15:26:40 thread:http-nio-8081-exec-3 X-Track:84b8ab0aa6504352a815ce85167a1981 level:TRACE logger:o.s.aop.interceptor.DebugInterceptor message:Exiting ReflectiveMethodInvocation
3. kokkuvõte
Kui te ei ole tuttav DebugInterceptori kasutamisega, vaadake seda.
Need on peamised sammud ja piirangud, mida tuleb arvestada.
■Artiklid
■Profiil
■Kontakt