2011-09-04 17 views

Respuesta

22

Sí hay!

<bean id="customizableTraceInterceptor" class="org.springframework.aop.interceptor.CustomizableTraceInterceptor"> 
    <property name="enterMessage" value="Entering $[methodName]($[arguments])"/> 
    <property name="exitMessage" value="Leaving $[methodName](): $[returnValue]"/> 
</bean> 
<aop:config> 
    <aop:advisor advice-ref="customizableTraceInterceptor" pointcut="execution(public * BankAccountServlet.*(..))"/> 
</aop:config> 

Mira la API CustomizableTraceInterceptor, se puede definir por separado introducir mensajes/salida/de excepción con varios marcadores de posición:

  • $[methodName] - sustituya por el nombre del método que se invoca
  • $[targetClassName] - reemplazado con el nombre de la clase que es el destino de la invocación
  • $[targetClassShortName] - reemplazado con el nombre corto de la clase que es el destino de la invocación
  • $[returnValue] - reemplazado con el valor devuelto por la invocación
  • $[argumentTypes] - sustituido con una lista separada por comas de los nombres de clase cortos de los argumentos del método
  • $[arguments] - sustituido con una lista separada por comas de la representación de cadena del argumentos del método
  • $[exception] - sustituido con la representación de cadena de cualquier Throwable levantado durante la invocación
  • $[invocationTime] - reemplazado con el tiempo, en milisegundos, tomada por el método en vocación
+0

Es interesante, mañana lo intentaré, ¿Podría publicar el enlace donde puedo leer sobre él? Gracias –

+0

Sí, gracias, acabo de leer :) –

+0

@Tomasz - Probé esto en el servidor Eclipse Virgo de un paquete OSGI. no imprimió ningún registro en el archivo de registro. dudo que sea por el tema del tejido. pero no sé exactamente. ¿Podrías ayudarme? Gracias por adelantado. – Sam

0

Aquí está la lista de los marcos que madereras a través de AOP:

http://aspect4log.sf.net - hace un aspecto muy agradable a través de la tala y la anotación slf4j @Log. Puede funcionar a través de SpringAOP y AspectJ. Con AspectJ funciona incluso para métodos y constructores privados y no requiere que una clase sea un Spring Bean. Muy fácil de usar, pude hacerlo funcionar con mi proyecto en 5 minutos.

http://loggifier.unkrig.de - hace el registro a través de java.util.logging, un documento demasiado complejo y no tan bueno, pero afirma que puede instrumentar archivos ya compilados jar/war/ear!

AbstractTraceInterceptor (de SpringAOP) y sus subclases SimpleTraceInterceptor y CustomizableTraceInterceptor. La configuración de registro se realiza por separado de las clases. Registros a través del registro de recursos comunes. Dado que está diseñado para SpringAOP, debe trabajar con Spring Beans (y solo con los métodos públicos de Spring Beans).

Cuestiones relacionadas