PostSharp OnMethodBoundaryAspect缩进/填充

本文关键字:填充 缩进 OnMethodBoundaryAspect PostSharp | 更新日期: 2023-09-27 18:26:00

我一直在尝试为自己的方法边界特性添加一些填充。

StackTrace似乎没有帮助,我找不到一个模式来计算帧数基线,对于简单的场景,它大约是12。

[Serializable]
public class MyLogger : OnMethodBoundaryAspect
  public override void OnEntry(MethodExecutionArgs args)
  {
    // ...
    var ignoreFrameCount = ???; // in simple scenarios is ~12
    var n = new StackTrace().FrameCount - ignoreFrameCount;
    var padding = String.Empty.PadLeft(n*2);
    // ...

我知道PostSharp做到了(日志中的缩进)

有没有办法做到这一点?

PostSharp OnMethodBoundaryAspect缩进/填充

创建StackTrace通常非常缓慢,我不建议在日志记录期间使用它。

最简单的方法是声明:

[ThreadStatic]
private static int indentLevel;

然后,您所需要做的就是在OnEntry和OnExit建议中适当地增加和减少这个变量。