Logovani ve Springu

Jak udělat podrobné logování ve Springu tak, aby se nemusel procházet kód a ručně vkládat něco jako log.debug(....);? Spring framework má pro tyto úcěly vynikající podporu, jejíž použití je naprosto jednoduché.

Tomu řešení se říká AOP a Spring má vestavěno několik zajímavých aspektů.

Začněme příkladem použití:


	
	
	



	
	
	
	
	

Výše uvedená konfigurace zajistí to, že všechny beany, které jsou ve stejném aplikačním kontextu a jejichž názvy končí řetězci „BusinessService“ a nebo „Bean“ (parametr beanNames u BeanNameAutoProxyCreator) budou automaticky obaleny dynamickou proxy, která bude aplikovat CustomizableTraceInterceptor. “’Tento interceptor zajistí“‘, že:
* bude zalogováno volání jakékoliv public metody beany včetně vstupních argumentů
* bude zalogována výstupní hodnota včetně času, které vykonání metody
* v případě ukončení volání vyjímkou, bude tato vyjímka také zalogována
* logování bude na TRACE levelu a pokud je nastaveno logování pouze na vyšší úrovni, nebude volání metod v podstatě nijak výrazně zpomaleno
* zalogované záznamy budou aplikovat původní název třídy jako název použitého loggeru (tzn. ignorují se názvy proxy class i interceptoru)

Zajímavých interceptorů připravených rovnou k použití poskytuje Spring více:

  • ConcurrencyThrottleInterceptor – omezuje paralelní volání metod dané instance
  • PerformanceMonitorInterceptor – umožňuje jednoduché logování výkonnostních otisků (tzn. jak dlouho trval běh konkrétního volání metody instance)
  • DebugInterceptor – jednoduché (fixní) logování metod dané instance
  • CustomizableTraceInterceptor – umožňuje customizovatelné transparentní logování volání metod dané instance

Napsat komentář