任何人都有關於如何記錄方法條目(包括參數值)並在跟蹤級別使用Spring AOP和log4j退出的想法。它應該能夠從多個包中記錄類。使用Spring AOP的日誌方法條目
1
A
回答
2
您可以使用Spring框架的PerformanceMonitorInterceptor來記錄方法條目。 Here是DZone的示例用法。
4
可以使用@Around(..)用於這樣的目的方面:
@Component
@Aspect
@Order(value=2)
public class LoggingAspect {
@Around("execution(* com.blablabla.server..*.*(..))")
public Object logMethod(ProceedingJoinPoint joinPoint) throws Throwable{
final Logger logger = LoggerFactory.getLogger(joinPoint.getTarget().getClass().getName());
Object retVal = null;
try {
StringBuffer startMessageStringBuffer = new StringBuffer();
startMessageStringBuffer.append("Start method ");
startMessageStringBuffer.append(joinPoint.getSignature().getName());
startMessageStringBuffer.append("(");
Object[] args = joinPoint.getArgs();
for (int i = 0; i < args.length; i++) {
startMessageStringBuffer.append(args[i]).append(",");
}
if (args.length > 0) {
startMessageStringBuffer.deleteCharAt(startMessageStringBuffer.length() - 1);
}
startMessageStringBuffer.append(")");
logger.trace(startMessageStringBuffer.toString());
StopWatch stopWatch = new StopWatch();
stopWatch.start();
retVal = joinPoint.proceed();
stopWatch.stop();
StringBuffer endMessageStringBuffer = new StringBuffer();
endMessageStringBuffer.append("Finish method ");
endMessageStringBuffer.append(joinPoint.getSignature().getName());
endMessageStringBuffer.append("(..); execution time: ");
endMessageStringBuffer.append(stopWatch.getTotalTimeMillis());
endMessageStringBuffer.append(" ms;");
logger.trace(endMessageStringBuffer.toString());
} catch (Throwable ex) {
StringBuffer errorMessageStringBuffer = new StringBuffer();
// Create error message
logger.error(errorMessageStringBuffer.toString(), e)
throw ex;
}
return retVal;
}
}
在圍繞方面記錄此示例中,所有方法調用下com.blablabla.server包中的所有的子包。它還記錄所有方法輸入參數。
相關問題
- 1. 使用Spring AOP的審計日誌
- 2. Spring AOP方面註釋日誌記錄
- 3. 使用spring AOP在包級別進行日誌記錄AOP
- 4. 如何使用spring aop進行方法鏈接的日誌記錄
- 5. 使用spring AOP方面截取方法?
- 6. Spring AOP方面的日誌消息方面啓動
- 7. Spring Aop日誌行數不正確
- 8. Spring AOP日誌記錄和緩存
- 9. 使用Spring AOP獲取方法參數?
- 10. 使用Spring Boot和AOP進行性能日誌記錄
- 11. 使用Spring AOP集中化日誌記錄
- 12. Spring AOP的 - 方法調用()不發生
- 13. 使用Spring AOP記錄Spring框架類的方法
- 14. 用於HTTP請求的Spring AOP日誌記錄
- 15. 環繞日誌條目
- 16. 用Spring aop截獲Jersey資源方法
- 17. Spring AOP。與目標
- 18. 使用Android日誌方法
- 19. Spring AOP當被建議的方法調用目標方法時的限制
- 20. 使用logback定製日誌條目
- 21. 使用日誌方法空隙方法
- 22. 的Spring AOP只標註方法
- 23. 添加彈簧AOP(Aspect Oriented Programing)日誌
- 24. 在Apache Karaf上設置OSGi包中的Spring AOP日誌記錄
- 25. Spring AOP的日誌記錄攔截器和JAXB問題
- 26. 目標C日誌方法調用
- 27. 使用spring aop記錄方法的返回值
- 28. 的Spring AOP之前和方法不使用XML配置
- 29. 使用Spring AOP進行嵌套方法調用proxyTargetClass = true
- 30. Spring每個方法都應該使用AOP代理bean調用