我们有一个项目,我们正在使用PostSharp来启用日志记录。效果很好。但是,有一些方法在非常紧凑的循环中运行,其中日志记录的开销确实增加了相当大的数量。我正试图找出从日志记录代码中排除它们的最佳方法。
根据我的阅读,这种方法应该有效
AssemblyInfo.cs
// turn on logging for all methods in all classes
[assembly: Log(LogType.Debug)]
Code.cs
// exclude this specific method
[Log(AttributeExclude=true)]
private void SomeMethod(...)
但是,当我这样做并使用分析器运行它时,我仍然看到在SomeMethod()上执行的日志代码。我根据SO和PostSharp论坛上的帖子尝试了很多不同的迭代,我总能得到相同的结果。
感觉这应该非常简单,我只是错过了一些明显的东西。
答案 0 :(得分:0)
我发现我的SomeMethod()例程中有一个LINQ查询,编译器正在变成一个单独的方法。此编译器生成的方法也由PostSharp使用Log属性进行修饰。在分析器中查看这一点并不清楚发生了什么,但在使用Resharper挖掘生成的代码后,我发现了它。