2017-12-02 12 views
0

nlog를 사용하여 로그에 파일을 쓰고 있습니다. 현재 내가 뭔가를 기록 할 때 그 클래스의 모든 것을 기록합니다. 난 당신이 설정에서 대신 GetCurrentClassLoggernlog에서 특정 방법으로 로그온

Logger logger = NLog.LogManager.GetLogger("myLogger"); 

GetLogger를 사용할 수있는 예는이 경우 구체적인 방법에

public void myMethod(){ 
     try 
     { 
     } 
     catch(Exception ex){ 
      Logger logger = NLog.LogManager.GetCurrentClassLogger(); 
      logger.Info("testing"); 
      logger.Log(LogLevel.Info, "Sample informational message"); 
     } 
} 
+0

"현재 다음 해당 클래스에서 모든 것을 기록합니다

대체 당신은 (대부분 더 나은 성능을) NLog 로거를 포장하고, 발신자 정보 속성을 사용하여 정보를 직접 캡처 할 수 있습니다 "무슨 뜻이야? 예를 들어 주시겠습니까? 기대하지 않는 것은 무엇일까요? – lucky

+0

@Rainman 나는 전체 솔루션에서 실행되는 모든 메소드를 기록한다고 말하고자했습니다. – Happy

답변

1

실패하는 일을 로그하려는 당신은 할 수 로거 이름에 경로/필터 :

<rule name="myLogger" minLevel="trace" writeTo="myFile" /> 
+0

myLogger는 어디에서 참조 할 수 있습니까? – Happy

+0

예제를 업데이트했습니다. – Julian

1

나는 당신이 클래스 메소드의 이름을 캡처 할 추측하고있어 그 (클래스 이름뿐만 아니라) 로깅을하고있다.

은 (callsite에서 클래스 이름, 멤버 함수 이름, 소스 파일 및 LINENUMBER을 제공 할 수 있습니다) NLog에 callsite라고 :이 기능을 활성화

https://github.com/NLog/NLog/wiki/Callsite-layout-renderer

큰 오버 헤드를 제공합니다 (윌 각 로그 이벤트에 대해 전체 StackTrace 캡처), 따라서 활성화 할 때주의해야합니다.하지만 모든 로그 이벤트에 대해 GetCurrentClassLogger()를 호출하는 것은 비용이 많이 듭니다. 내가 뭔가를 로그인 할 때

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/caller-information