You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.5 KiB
44 lines
1.5 KiB
using log4net; |
|
using MethodDecorator.Fody.Interfaces; |
|
using Rougamo; |
|
using Rougamo.Context; |
|
using System.Reflection; |
|
using System.Text; |
|
|
|
namespace SparkClient.Model.Attributes |
|
{ |
|
[AttributeUsage(AttributeTargets.Method)] |
|
public class LogAttribute : MoAttribute |
|
{ |
|
private static readonly ILog Logger = LogManager.GetLogger(typeof(LogAttribute)); |
|
|
|
|
|
public override void OnEntry(MethodContext context) |
|
{ |
|
//Logger.Debug($"Entering {context.Method.DeclaringType?.Name}.{context.Method.Name}"); |
|
// 获取方法参数 |
|
var parameters = context.Method.GetParameters(); |
|
var arguments = context.Arguments; |
|
|
|
// 构建参数字符串 |
|
var parameterLog = new StringBuilder(); |
|
for (int i = 0; i < parameters.Length; i++) |
|
{ |
|
parameterLog.Append($"{parameters[i].Name} = {arguments[i]}, "); |
|
} |
|
|
|
// 记录日志 |
|
Logger.Debug($"Entering {context.Method.DeclaringType?.Name}.{context.Method.Name} with parameters: {parameterLog}"); |
|
} |
|
|
|
public override void OnExit(MethodContext context) |
|
{ |
|
//Logger.Debug($"Exiting {context.Method.DeclaringType?.Name}.{context.Method.Name}"); |
|
// 获取返回值 |
|
var returnValue = context.ReturnValue; |
|
|
|
// 记录日志 |
|
Logger.Debug($"Exiting {context.Method.DeclaringType?.Name}.{context.Method.Name} with return value: {returnValue}"); |
|
} |
|
} |
|
}
|
|
|