2016-08-06 4 views
2

내 응용 프로그램에 기능을 추가해야하는 요구 사항이 있습니다. 구성 파일 로그에 기반한 코드를 코드에 추가해야합니다. 예를 들어 내 클래스 이름이 abc.cs이면 사용자가 구성 파일에 다음 항목을 만듭니다.구성 파일을 기반으로하는 동적 로깅

<entry typeName = "mynamespace.abc"> 
<LineNumbers ="1,2,3,10, 12"> 
</entry> 

이제 라인 번호 1,2,3,10,12을 위해 그들이 코드 흐름에 도달하기 전에 로그 항목은 로그 파일이 "행 번호 X y를 입력 도달"를 언급에 생성됩니다.

코드를 변경하거나 dll을 변경하지 않고 런타임에이 문제가 발생하기를 원하면 더 많은 로깅이 필요할 때 구성 파일에 형식과 줄 번호를 추가하십시오.

인터넷을 통해 나는 AOP가이 문제를 해결할 수 있음을 알았지 만, 실제로 어떤 프레임 워크 또는 접근 방식이 도움이되는지 확신 할 수 없습니다.

동일한 가이드 라인을 기대합니다. 내 응용 프로그램에서 C# 및 .net 프레임 워크를 사용합니다.

+0

일반적으로 AOP 프레임 워크와 PostSharp는 메소드 입력, 메소드 종료 등과 같이 엄격하게 정의 된 pointcuts에 코드 (조언)를 삽입하도록 설계되었습니다. 라인 번호에 따라 임의의 코드 행을 인터셉트하는 것은 AOP에서 지원되지 않습니다. – AlexD

답변

0

이러한 종류의 로깅이 필요한 경우 (원격) 디버거를 연결하고 특정 줄에 도달하면 작업 중단 점을 구성하여 기록 할 수 있습니다.

0

PDB 리더로 결과를 얻을 수 있습니다. 참조하시기 바랍니다 : Common Compiler Infrastructure: Metadata API 해당 도구를 사용하면 코드 위치를 유형별로 추적 할 수 있습니다.

CCI 메타 데이터 API를 사용하면 응용 프로그램에서 .NET 어셈블리, 모듈 및 디버깅 (PDB) 파일을 효율적으로 분석하거나 을 수정할 수 있습니다. CCI 메타 데이터는 .NET System.Reflection 및 System.Reflection.Emit API의 기능을 지원하지만 성능은 훨씬 뛰어납니다. 또한 은 .NET API에서 사용할 수없는 추가 기능을 제공합니다.