2012-07-19 8 views
6

Próbuję skonfigurować Log4Net (jest to mój pierwszy raz przy użyciu Log4Net) do zalogowania się do pliku tekstowego w zespole. Nie dostaję żadnych błędów, ale też nie działa. Mogę zlikwidować linie, w których zapisuję dane wyjściowe i widzę, że są one osiągnięte, ale jak mówię nic się nie dzieje.Konfigurowanie Log4Net do rejestrowania danych wyjściowych z biblioteki klas

Gdzie się mylę?

Dodałem następujące do mojego pliku packages.config wewnątrz atrybutu <packages>:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender,log4net"> 
     <file value="c:\CTI\log.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %level %logger - %message%newline" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="FATAL" /> 
     </filter> 
    </appender> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="FileAppender"/> 
    </root> 
    </log4net> 
</configuration> 

Dodałem następujący wiersz do AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(Watch=true)] 

Dodałem montaż log4net korzystając Nuget i ja zalogowaniu tak:

private log4net.ILog _Log; 
_Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
_Log.Debug("FooBar"); 

Tak jak mówię, nie ma błędów, ale nic się nie dzieje.

Czego mi brakuje?

Odpowiedz

6

Jedną z rzeczy, która jest nie tak, jest to, że dodajesz sekcję konfiguracji log4net do pliku konfiguracyjnego nuget (packages.config).

Możesz mieć konfigurację w konfiguracji aplikacji/sieci lub w osobnym pliku, do którego wskażasz z aplikacji, np. konfiguracja znajduje się w pliku o nazwie config.log4net (atrybut pliku copy to output directory jest ustawiony na copy always) i dodać następujący wpis w app/web.config:

<add key="log4net.config" value="config.log4net"/> 

Jeśli nie chcesz polegać na konfiguracja web/app, można ustawić właściwość atrybutu XmlConfiguratorAttributeConfigFileExtension w AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "log4net", Watch = true)] 

Następnie nazwij plik konfiguracyjny log4net takie samo jak exe/montaż plus skonfigurowanej rozszerzenia, np MyApplication.exe.log4net lub MyLibrary.dll.log4net

Inną rzeczą, która jest nie tak, jest filtr dopychacza. Zakres, który ustawiłeś, wyklucza poziom DEBUG, który chcesz zarejestrować. Oto wszystko logging levels:

ALL 
DEBUG 
INFO 
WARN 
ERROR 
FATAL 
OFF 

Jak widać, nie jest DEBUG między INFO i FATAL.

Powiązane problemy