2010-03-11 4 views
0

내 WinForms 응용 프로그램을 시작할 때 "MyDataSet.GetInstance()"를 수행하는 점 (MainForm 렌더러 이전)이 몇 가지 있다는 것을 알았습니다. 첫 번째 경우 MyLog.Debug 줄이 VS2008 출력 창에 나타나지만 나중에는 작동하고 통과합니다.log4net - 동일한 MyLog.Debug 라인이 시작 지점에서 작동하지 않고 다른 지점에서 작동하는 이유는 무엇입니까?

설명 할 수있는 것은 무엇입니까? 디버그 시간에 MyLog.Debug 행의 출력 행이 출력 창에 나오지 않는 이유는 무엇입니까?

namespace IntranetSync 
{ 
    public class MyDataSet 
    { 
     private static readonly ILog MyLog = LogManager.GetLogger(typeof(MyDataSet)); 

     public static MyDataSet GetInstance() 
     { 
      MyLog.Debug("MyDataSet GetInstance() ====================================="); 
      if (myDataSet == null) 
      { 
       myDataSet = new MyDataSet(); 
      } 
      return myDataSet; 
     } 
. 
. 
. 

ps. Log4net 저장소 초기화를 다시 수행하고있는 것은 로깅을 사용하는 클래스에서 개인 변수로 다음 행을 넣는 것입니다.

static class Program 
    { 
     private static readonly ILog MyLog = LogManager.GetLogger(typeof(MainForm)); 
. 
. 
. 

    public class Coordinator 
    { 
     private static readonly ILog MyLog = LogManager.GetLogger(typeof(MainForm)); 
. 
. 
. 

    public class MyDataSet 
    { 
     private static readonly ILog MyLog = LogManager.GetLogger(typeof(MyDataSet)); 
. 
. 
. 
+0

는 첫 번째 통해 오지 않는 건가요, 또는 당신은/두 번째는 나중에 통해 오지 않는 말? –

+0

MyDataSet.GetInstance 피터 즉 첫번째 호출을 통해 오지 않는 첫 번째는() 베드로가 – Greg

답변

2

나는 GetInstance 방법에 대한 첫 번째 호출이 log4net 저장소가 초기화 전에 발생 같은데요. Du. 명시 적으로 저장소를 초기화하고, 그렇다면 다음을 수행하십시오.

+0

감사 - 나는 내 질문의 하단에 답을 추가 한 - 내가이 작업을 수행하는 방법에 문제가 있습니까? – Greg

+0

자, 초기화는 * 로거 *입니다. Log4net을 구성하는 방법은 무엇입니까? XmlConfigurator, BasicConfigurator, XmlConfigurator 특성을 사용하고 있습니까? http://logging.apache.org/log4net/release/manual/configuration.html에서 내가 말하는 것에 대해 읽어보십시오 ... –

+0

감사합니다. "BasicConfigurator.Configure();"를 잊어 버렸습니다. mainForm()에 있지만 개인 인스턴스 변수 초기화 작업을 수행하기 전에 작업을 수행하고있었습니다. 나는이 줄을 Program.cs에 넣었으며 이제는 잘 작동하는 것 같다. – Greg

관련 문제