2011-06-29 19 views
6

Chciałbym zalogować się do Podglądu zdarzeń systemu Windows przy użyciu log4net.
stworzyłem aplikację konsoli (.NET Framework 4), dodałem log4net.dll odniesienia, umieścić następujący kod w moim app.config:log4net nie loguje się Podgląd zdarzeń Windows

<configuration> 
<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
</configSections> 

<log4net> 
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
    </layout> 
</appender> 
<root> 
    <level value="ALL"/> 
    <appender-ref ref="EventLogAppender"/> 
</root> 
</log4net> 

<startup><supportedRuntime version="v2.0.50727"/></startup> 
</configuration> 

I umieścić następujący kod:

class Program 
{ 
    static void Main(string[] args) 
    { 
     log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); 
     log.Error("test error", new Exception("error's exception", new Exception("error's innerexception"))); 

     Console.Read(); 
    } 
} 

Nie rejestruje się, nic się nie dzieje, dlaczego?

Dzięki

Odpowiedz

10

Trzeba zadzwonić configure.

Zmiana:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)] 

Aby

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

Po określeniu ConfigFile = "App.config" jej będzie szukać app.config ale nazwa pliku będzie [FileName].Config.

+1

Jestem pod administrator konto. Próbowałem uruchomić moją aplikację jako administrator, ten sam problem. Próbowałem zrestartować studio graficzne jako admin, ten sam wynik. – Nico

+0

Czy masz instrukcję konfiguracyjną? – Nix

+0

w ten sposób? [assembly: log4net.Config.XmlConfigurator (ConfigFile = "App.config", Watch = true)] Użyłem domyślnego App.config, próbowałem umieścić to w AssemblyInfo.cs, ten sam wynik. – Nico

5

Musisz zadzwonić pod numer XmlConfigurator.Configure z biblioteki log4net, aby go zainicjować. (zobacz poniżej)

class Program 
{ 
    static void Main(string[] args) 
    { 
     // you need this 
     XmlConfigurator.Configure(); 
     log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); 
     log.Error("test error", new Exception("error's exception", new Exception("error's innerexception"))); 

     Console.Read(); 
    } 
} 
0

Zadzwoń do XmlConfigurator.Configure() na początku swojej aplikacji.

Należy również udzielić użytkownikowi uruchamiającemu prawa aplikacji umieszczenie danych w dzienniku zdarzeń.

Dobrym sposobem na to jest z PowerShell trybie administratora

New-EventLog EventLogName -source ApplicationName 

również dodać to dwa parametry do appender

<param name="LogName" value="EventLogName " /> 
    <param name="ApplicationName" value="ApplicationName" /> 

Pozdrowienia,

Powiązane problemy