using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; namespace JiShe.CollectBus.Interceptors { public class LogInterceptor : AbpInterceptor, ITransientDependency { public override async Task InterceptAsync(IAbpMethodInvocation invocation) { // 方法执行前的逻辑(如果需要) try { // 执行原始方法 await invocation.ProceedAsync(); // 方法执行成功后,返回前的逻辑 await OnSuccessAsync(invocation); } catch (Exception ex) { // 出现异常时的逻辑 await OnExceptionAsync(invocation, ex); throw; } finally { // 方法结束前一定会执行的逻辑 await OnCompleteAsync(invocation); } } private Task OnSuccessAsync(IAbpMethodInvocation invocation) { // 方法执行成功后的逻辑 // 可以访问 invocation.ReturnValue 获取返回值 Console.WriteLine($"方法 {invocation.Method.Name} 成功执行,返回值:{invocation.ReturnValue}"); return Task.CompletedTask; } private Task OnExceptionAsync(IAbpMethodInvocation invocation, Exception ex) { // 方法执行异常时的逻辑 Console.WriteLine($"方法 {invocation.Method.Name} 执行异常:{ex.Message}"); return Task.CompletedTask; } private Task OnCompleteAsync(IAbpMethodInvocation invocation) { // 无论成功失败,方法执行完毕后的逻辑 Console.WriteLine($"方法 {invocation.Method.Name} 执行完毕"); return Task.CompletedTask; } } }