2010-05-17 21 views
13

Oto moje informacje web.config:Bardzo proste rejestrowanie appender plik nie działa

<configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
     </configSections> 
     <log4net> 
     <root> 
       <level value="ALL" /> 
     </root> 
     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
       <file value="c:\temp\log-file.txt" /> 
       <appendToFile value="true" /> 
       <rollingStyle value="Size" /> 
       <maxSizeRollBackups value="10" /> 
       <maximumFileSize value="1MB" /> 
       <staticLogFileName value="true" /> 
       <layout type="log4net.Layout.SimpleLayout" /> 
     </appender> 
     </log4net> 
... 

Oto kod, który inicjuje Rejestrator:

protected void SendMessage() 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
     ILog log = LogManager.GetLogger(typeof(Contact)); 
     ... 
     log.Info("here we go!"); 
     log.Debug("debug afasf"); 
     ... 
    } 

to nie działa, bez względu na to, co wydaje mi się do zrobienia. Odwołuję się do "log4net.dll" poprawnie, a debugując aplikację widzę, że obiekt dziennika jest poprawnie inicjowany. To jest projekt strony WWW asp.net 3.5. Wszelkie pomysły/sugestie?

Początkowo sądziłem, że ten błąd może wynikać z ograniczenia uprawnień do zapisu pliku, ale wydaje mi się, że tak nie jest.

+0

Btw, „Kontakt” to nazwa klasy, która to funkcja SendMessage() znajduje. – contactmatt

Odpowiedz

11

Znalazłem odpowiedź: Potrzebowałem requirePermission = „false” znacznik w seciton konfiguracji mojego web.config.

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" **requirePermission="false"**/> 
</configSections> 
+4

Jesteś moim nowym najlepszym przyjacielem. –

5

O ile widzę jesteś brakuje appender dla root:

<root> 
    <level value="ALL" /> 
    <appender-ref ref="RollingFileAppender" /> 
</root> 
+1

że tego nie zrobił . Ciekawe jest to, że podczas uruchamiania strony tworzy się plik .txt, ale nie rejestruje on niczego w tym miejscu. Kiedy próbuję usunąć plik (podczas gdy proces serwera WWW wciąż działa), mówi, że serwer sieciowy aktualnie go używa ... nawet po tym, jak opuściłem stronę, która korzysta z możliwości logowania (tylko jedna strona korzysta z rejestrowania) . – contactmatt

+0

@contactmatt: Przykro mi, nie mogę ci więcej pomóc. Skopiowałem konfigurację do jednego z moich programów (i dodałem appende-ref) i działało zgodnie z oczekiwaniami. Upewnij się, że masz najnowszą wersję log4net i że plik konfiguracyjny jest aktualny (rozpocznij przebudowę, zajrzyj do pliku). – tanascius

+0

Właśnie tego szukałem, dzięki człowieku! –

0

Czy to możliwe, aby uruchomić Debug View na serwer WWW?

Jeśli tak, możesz być w stanie sprawdzić, czy log4net zgłasza żadnych błędów (takich jak błąd dostępu lub błąd odczytu pliku konfiguracyjnego)

0

musiałem zadzwonić fileAppender.ActivateOptions(), aby uzyskać to zalogowaniu

Powiązane problemy