2011-01-14 14 views
9

Estoy usando log4net para registrar los errores.use log4net sin web.config

Actualmente He descargado el archivo log4net.dll, y luego hizo el siguiente cambio en global.asax archivo:

private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

protected void Application_Start(object sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 
protected void Application_Error(object sender, EventArgs e) 
{ 
    Log.Fatal("An uncaught exception occurred", this.Server.GetLastError()); 
} 

también estos cambios se hicieron en el archivo web.config

<log4net> 

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <param name="File" value="c:\Log4NetExample.log"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
    </layout> 
</appender> 

<root> 

    <level value="All"/> 

    <appender-ref ref="LogFileAppender"/> 
</root> 

todo funciona ... pero lo que necesito es mover el código desde el web.config y leerlo desde un archivo de texto.

También necesito 2 niveles de depuración y error ..

Puede alguien ayudarme con esto?

Gracias

+0

http://geekswithblogs.net/bsherwin/archive/2008/02/15/119657.aspx – kenny

Respuesta

15

poner este atributo en su archivo AssemblyInfo.cs:

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

donde 'log4net.config' equivale al nombre de su archivo de configuración.

Por supuesto, existen otras formas de lograr el mismo efecto. Puede, por ejemplo, dejar configurado el controlador de la sección de configuración en su web.config. Mover el elemento a su propio archivo XML, y sustituirlo en web.config con un elemento vacío, por lo tanto:

<log4net configSource="c:\config\myLog4NetConfig.xml" /> 

El atributo configSource suministra la ubicación del archivo externo (no puede ser una ruta UNC, aunque , tiene que ser local para la máquina.)

En cuanto a la configuración de log4net ... que puede ser un poco complicado.Ver estos enlaces para obtener ayuda y ejemplos:

+1

Me gusta tener mi archivo de configuración de log4net separado porque también le permite cambiar rápidamente los modos sin forzar una recarga del ensamblado, que es lo que sucedería si actualiza el archivo web.config. –

+1

Asegúrese de que Log4Net.config tenga una configuración de compilación de "Copiar si es más reciente". Particularmente para proyectos de consola. –

+0

¿Qué pasa con las rutas relativas? ¿Puedo escribir '' por ejemplo? –

1

No sé si esto es lo que quiere, pero se puede poner la misma información de configuración de log4net XML en un archivo txt, lea usted mismo, y luego inicializar log4net con exactamente eso XML.

Consulte this question aquí en SO para saber cómo configurar log4net con xml mediante programación. En el ejemplo, estoy mostrando enviar xml directamente a log4net a través de log4net api. Lo único que falta para su caso es leerlo de un archivo de texto. Creo que si copió su información de configuración de log4net xml desde web.config y la pegó en un archivo de texto, debería poder leerla desde el archivo y enviarla a log4net como se muestra en el ejemplo.

Tenga en cuenta que si solo quiere su configuración de log4net logging en un archivo separado del web.config, log4net le permite especificar un archivo separado que contiene solo la información de configuración de log4net (y esto sería una cosa más estándar que hacer que mi ejemplo anterior).

Consulte this question para ver un ejemplo de cómo hacer eso para una aplicación ASP.NET.

Cuestiones relacionadas