Pregunta

Tengo un servicio de Windows donde el archivo app.config y los archivos log4net.config están separados. El registro no funciona.

En mi archivo app.config, tengo lo siguiente en la sección:

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

Esto funciona si en el valor especifico una ruta absoluta al archivo log4net.config.

¿Necesito proporcionar una ruta absoluta al log4net.cong? Tanto el archivo log4net.config como el archivo app.config están en la misma carpeta que el ejecutable.

alguna idea?

Parag

¿Fue útil?

Solución

Quizás esto sea útil ( Mover su configuración de Log4Net fuera de web.config con sitios web ASP.NET 2.0 .).

Estas son las partes que pueden interesarle:

  

Dile a la aplicación que configure   log4net usando este archivo de configuración. Ahí   son realmente dos puntos para esto. Primero,   el global.asax y segundo el   conjunto de archivos Info.cs. Tenga en cuenta que la mayoría   del tiempo comenzarás con un   archivo global.asax con todo el código   en línea. Por alguna razón, el único   manera en que podía hacer que esto funcionara era   romper el global.asax para usar un   código detrás y luego el culo   conjunto de archivos Info.cs. Entonces termina   luciendo así.

     

global.asax:   <% @ Application Language = " C # " Hereda = & Quot; GlobalAsax & Quot; % >   global.asax.cs (en su carpeta App_Code):

using System;
using System.Web;

public class GlobalAsax : HttpApplication
{
    // you may have lots of other code here
    void Application_Start(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}
  

Ahora que tienes tu aplicación   llamando a la configuración de log4net, usted   puede establecer un atributo en su ensamblaje   información para que log4net sepa dónde   busca el archivo de configuración.   AssemblyInfo.cs (en su App_Code   carpeta):

     

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

     

La bandera de vigilancia le dice a log4net que mantenga un   ojo en el archivo de configuración para   cambios potenciales Esto es útil si   quieres cambiar la configuración   desde registrar todo hasta errores solamente   durante la mitad de su prueba.

Para asegurarse de que log4net.config siempre esté ahí, agregue log4net.config al csproject y configúrelo en CopyAlways. Debe presentarse en la carpeta de depuración.

Puede usar un script para copiar todo a una carpeta de lanzamiento, o si está utilizando un proyecto de instalación de MS, agregue manualmente ese archivo al proyecto. Luego se agregará una referencia.

Otros consejos

Para el servicio de Windows, el directorio actual es Windows \ system32, y XmlConfigurator.Configure () usa FileInfo que trata las rutas relativas relativas al directorio actual. Entonces log4net está buscando su archivo de configuración en Windows \ system32.

XmlConfiguratorAttribute, por otro lado, usa BaseDirectory de la aplicación, es por eso que siempre funciona.

Alternativamente, puede hacer lo siguiente antes de llamar a XmlConfigurator.Configure ():

System.IO.Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top