61 lines
1.9 KiB
C#
61 lines
1.9 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|