2011-01-31 3 views
1

로깅을 사용하기 위해 PostSharp를 사용하는 프로젝트가 있습니다. 훌륭하게 작동합니다. 그러나 매우 엄격한 루프에서 실행되는 두 가지 방법이 있는데, 여기에는 로깅의 오버 헤드가 실제로 상당 부분 합산됩니다. 나는 로깅 코드에서 그들을 제외시키는 최선의 방법을 찾아 내려하고있다. 나는이 작업을 수행하고 프로파일 러를 실행하면PostSharp - AttributeExclude를 사용하는 방법을 제외하면 작동하지 않습니다.

내가 읽은 바로는

,이 방법은 여전히 ​​로그 코드 것으로 someMethod에서 실행되는()를 참조, 그러나

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(...) 

을 작동합니다. 저는 SO와 PostSharp 포럼의 게시물을 기반으로 여러 가지 반복을 시도했으며, 항상 동일한 결과를 얻었습니다.

정말 간단해야하고 단지 뻔뻔스럽게 명백한 것을 놓친 것 같습니다.

+0

제안한 해결책이 효과가 있습니다. Reflector를 사용하여 SomeMethod를보고 코드 안에 무엇이 있는지 살펴 보았습니까? –

답변

0

SomeMethod() 루틴에 컴파일러가 별도의 메서드로 변경되었다는 LINQ 쿼리가 있습니다. 이 컴파일러 생성 된 메소드는 PostSharp에 의해 Log 속성으로 장식되었습니다. 프로파일 러에서 이것을 보면 어떤 일이 발생했는지 명확하지 않았지만 Resharper를 사용하여 생성 된 코드를 파헤쳐 본 후에 알아 냈습니다.

+0

ReSharper 또는 반사경을 사용 했습니까? –

관련 문제