2016-12-02 1 views
0

log4net을 사용하는 응용 프로그램이 있습니다. 그러나 SaveFileDialog를 표시하면 appenders가 다른 프로세스에 의해 덮어 쓰게됩니다. 새 appender를 보면 아이콘 오버레이를 다루는 프로세스에서 왔기 때문에 (내가 사용하는 로그 파일을 "icon-overlays.log"라고 부름), 응용 프로그램 내에서 탐색기를 열었 기 때문이라고 생각합니다.Log4net appenders가 다른 프로세스로 덮어 씁니다.

예 :

Log.Fatal("Before dialog");// logs fine 

SaveFileDialog newFileDialog = new Microsoft.Win32.SaveFileDialog(); 

Log.Fatal("Open dialog");//logs fine 

var appenders1 = Log.Logger.Repository.GetAppenders();//shows appenders from my config 

if (newFileDialog.ShowDialog() == false) 
{ 
    Log.Fatal("Cancelled dialog");//does not log 
    return; 
} 

var appenders2 = Log.Logger.Repository.GetAppenders();//shows appenders from other process 
Log.Fatal("New database selected");//does not log 

나는이 새로운 펜더에서 로그 파일을 찾을 때 내가 놓친 거지 그 로그가가는 볼 수 있습니다.

어떻게 이런 일이 일어나고 있는지, 어떻게 피할 수 있는지 알고 있습니까?

+0

는 버그가 셸 확장과 같은 소리

내부 디버깅을 활성화합니다. 아이콘 오버레이는 아이콘을 변경하는 보관 용 계정과 같은 프로그램에서 손가락을 가리 킵니다. (비록 내가 Dropbox를 가지고 있지만 그 문제를 보지 않고있다.) – sgmoore

+0

그것은 나의 가정이기도하지만 어떻게 다루어야할지 모른다. 해당 프로그램은 Box Sync입니다. – Lango

+0

상자에 버그로보고하거나 이미 수정했는지 확인하십시오. – sgmoore

답변

2

무슨 일이 일어나는지 보려면 log4net 디버그 로그를 살펴 봐야합니다. log4net을 구성/재구성하고 대화 상자를 열 때 해당 위치에 도달하는 여러 장소가있는 것 같습니다. 특정 파일에

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

쓰기 :

<configuration> 
    ... 

    <system.diagnostics> 
     <trace autoflush="true"> 
      <listeners> 
       <add 
        name="textWriterTraceListener" 
        type="System.Diagnostics.TextWriterTraceListener" 
        initializeData="C:\tmp\log4net.txt" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 

    ... 
</configuration> 
+0

이것을 사용하여 필자는 첨부 파일을 덮어 쓰는 Box Sync임을 확인했습니다. 연락 드리겠습니다. – Lango

+0

이 항목을 선택하면 문제를 진단하는 데 도움이됩니다. – Lango

관련 문제