PostSharp OnMethodBoundaryAspect缩进/填充

时间:2014-10-07 18:12:26

标签: c# nlog postsharp

我一直在尝试为自己的Method Boundary Aspect添加一些填充。

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会这样做(Indentation in Logging

无论如何要做到这一点?

1 个答案:

答案 0 :(得分:1)

创建StackTrace通常非常慢,我不会在记录期间推荐它。

最简单的方法是声明:

[ThreadStatic]
private static int indentLevel;

然后,您需要做的就是在OnEntry和OnExit建议中正确地增加和减少此变量。