Spring DebugInterceptor: AOP izsekošanas žurnāls izstrādei
Publikācijas datums:
Atjaunināts:
Tehniskie raksti > Spring DebugInterceptor: AOP izsekošanas žurnāls izstrādei
2026. gada statuss un droša lietošana
Secinājums: Spring DebugInterceptor ir uz starpniekserveri balstīts AOP pārtvērējs, kas reģistrē detalizētu metodes izsaukšanas informāciju TRACE līmenī. Tā ir paredzēta atkļūdošanai, nevis kā vispārēja ražošanas novērojuma stratēģija.
Ko jūs uzzināsiet
- Kā padomdevējs atlasa metodes un pievieno pārtvērēju piemērotajām pavasara pupiņām.
- Kāpēc sevis izsaukšana un objekti, kas izveidoti ārpus Spring konteinera, var apiet starpniekservera padomu.
- Kā izvairīties no argumentu, personas datu, akreditācijas datu vai pārmērīga žurnāla apjoma atklāšanas.
Kam tas ir paredzēts: pavasara izstrādātājiem, kuri uztur XML konfigurētu lietojumprogrammu vai apgūst klasisko uz starpniekserveri balstītu AOP.
2026. gada konteksts: klase joprojām pastāv pašreizējā Spring Framework dokumentācijā, taču tālāk sniegtais Spring 5.1.4 XML piemērs ir vēsturisks. Izmantojiet atbalstīto Spring līniju, ierobežojiet TRACE reģistrēšanu ar kontrolētu diagnostiku un dodiet priekšroku pašreizējai metrikai, izsekošanai un strukturētai reģistrēšanai ražošanas darbībām.
Drošības piezīme. Sākotnējā rakstā esošās komandas un konfigurācijas piemēri nav atkārtoti izpildīti pašreizējā ražošanas vidē. Pirms to lietošanas pārbaudiet atbalstītās versijas, dublējumus, piekļuves vadīklas un atcelšanas darbības atsevišķā testa vidē.
Galvenie oficiālie avoti
Pārskats.
Šis ir par to, kā izmantot Pavasara DebugInterceptor. Nākamā Pavasara tīmekļa vietne man palīdzēja izprast šo koncepciju, taču bija grūti saprast, ko tieši darīt tikai no tīmekļa vietnes, tāpēc es faktiski pārbaudīju rezultātus.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api
Satura rādītājs
1. Kas ir DebugInterceptor?
DebugInterceptor ir bibliotēka, kas izvada žurnālus ar AOP. Konkrēti, šādas bibliotēkas (JAR faili). Versija 5.1.4.
https://mvnrepository.com/artifact/org.springframework/spring-aop/5.1.4.RELEASE
Konkrētais Java fails ir "org.springframework.aop.interceptor.DebugInterceptor".
Īsumā, AOP ir metode apstrādes ievadīšanai instancēs, kas tiek pārvaldītas Spring DI konteinerā. Oficiālais AOP nosaukums ir uz aspektiem orientēta programmēšana.
Šajā gadījumā mēs vēlamies injicēt DebugInterceptor instancē, kas tiek ģenerēta ar @Component.
1-1. īstenošanas vide
Es vēlētos aprakstīt izmantoto JAR un versiju, jo atkarībā no vides var būt nelielas atšķirības.
| Pavasara aop versija | spring-aop-5.1.4.RELEASE.jar |
|---|---|
| Pavasara pupiņu versija | spring-beans-5.1.4.RELEASE.jar |
| Žurnāla izejas bibliotēkas versija | slf4j-api-1.7.25.jar logback-core-1.2.3.jar |
1-2. Nepieciešamais darbs.
Nepieciešamais darbs ir šāds.
- Izveidojiet gadījumu ar @Component.
- AOP definēšana failā applicationContext.xml
- Žurnāla izejas iestatījumu mainīšana
2. montāža
Tagad es vēlētos to īstenot praksē.
2-1. Izveidojiet gadījumu ar @Component.
Sagatavojiet klasi ar "@Component", kas deklarēta šādi. Izpildiet tikai "return", jo vēlaties redzēt tikai AOP.
@Component
public class TestAop{
public void testMethod() {
return;
}
}
2-2. AOP definēšana failā applicationContext.xml
Iestatiet AOP, lai ievadītu procesu. Sarkanā krāsā ir atzīmētas jomas, kas attiecas uz AOP.
<?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">
~saīsinājums~
<!-- Pavasara AOP testēšana. -->
<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' tiek rakstīts šādi.
pointcut="execution(* paketes nosaukums.klases nosaukums.metodes nosaukums(..))"
Iepriekš minētajā piemērā tas būtu šāds.
•paketes nosaukums: com.example
•klases nosaukums: TestAop
•metodes nosaukums: testMethod
Ja vēlaties to piemērot visām metodēm, piemēro šādus noteikumus.
•pointcut="execution(* com.example.TestAop.*(..))"
2-3. Žurnāla izejas iestatījumu mainīšana
Mainiet žurnālu veidošanas līmeni tikai DebugInterceptor, jo žurnāla izvades līmenis, kas aprakstīts DebugInterceptor, ir "TRACE". Sarkanā krāsā ir norādītas jomas, kas ir jānoregulē. Pārējos iestatījumus var ievadīt patvaļīgi.
<?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>
Veidojot to, es apskatīju dažu citu cilvēku blogus, un daži norādīja, ka izvadei jābūt izvadītai žurnāla līmenī DEBUG, bet "spring-aop-5.1.4.RELEASE.jar" gadījumā šķiet, ka izvade netiek izvadīta, ja vien tā nav žurnāla līmenī TRACE.
Ja konfigurācijai vajadzētu darboties, bet kāda iemesla dēļ žurnāli netiek izvadīti, mēģiniet žurnāla līmeni mainīt uz TRACE.
2-4. Rezultāts.
Ja izsaucat testMethod programmā TestAop.java ar iepriekšminētajiem iestatījumiem, jāparādās šādam logam. Žurnāls ir garš, tāpēc es izdzēsu dažas rindiņas, bet tam vajadzētu izvadīt pa divām rindiņām par ieiešanu un iziešanu, kopā četras rindiņas.
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. kopsavilkums
Ja neesat iepazinušies ar DebugInterceptor lietošanu, lūdzu, skatiet to.
Paldies, ka noskatījāties līdz beigām.