2011-06-29 18 views
6

Me gustaría iniciar sesión en el Visor de sucesos de Windows utilizando log4net.
he creado una aplicación de consola (.NET Framework 4), he añadido el log4net.dll referencia, puse el código siguiente en mi App.config:log4net no inicia sesión Visor de sucesos de 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> 

Y puse el siguiente código:

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(); 
    } 
} 

No se registra, no pasa nada, ¿por qué?

Gracias

Respuesta

10

es necesario llamar a configure.

Cambio:

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

Para

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

Cuando se especifica ConfigFile = "App.config" su ir a buscar App.config pero su nombre sería [FileName].Config.

+1

estoy bajo un administrador cuenta. Traté de ejecutar mi aplicación como administrador, el mismo problema. Traté de reiniciar Visual Studio como administrador, el mismo resultado. – Nico

+0

¿Tiene una declaración de configuración? – Nix

+0

como este? [assembly: log4net.Config.XmlConfigurator (ConfigFile = "App.config", Watch = true)] utilicé el App.config predeterminado, traté de poner esto en AssemblyInfo.cs, el mismo resultado. – Nico

5

Debe llamar al XmlConfigurator.Configure de la biblioteca log4net para inicializarlo. (Véase más adelante)

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

XmlConfigurator.Configure de llamadas() en el comienzo de su aplicación.

También debe otorgar al usuario que ejecuta los derechos de la aplicación para poner datos en el registro de eventos.

Una buena manera de hacerlo es con PowerShell, modo de administración

New-EventLog EventLogName -source ApplicationName 

Además, añadir estos dos parámetros en el appender

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

Saludos,

Cuestiones relacionadas