Pergunta

Eu tenho um serviço do Windows em que o arquivo app.config e os arquivos log4net.config são separados. O registro não está funcionando.

No meu arquivo app.config, eu tenho o seguinte na seção:

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

Isso funciona se no valor I especificar um caminho absoluto para o arquivo log4net.config.

Eu preciso fornecer um caminho absoluto para o log4net.cong? Tanto o log4net.config e arquivo app estão na mesma pasta que o executável.

todas as idéias?

Parag

Foi útil?

Solução

Talvez esta seja útil ( mover suas configurações Log4Net fora do web.config com ASP.NET 2.0 sites .).

Aqui estão as peças que você talvez possa estar interessado:

Diga a aplicação configure log4net usar este arquivo de configuração. Lá são realmente dois pontos para isso. Primeiro, o segundo e o Global.asax arquivo AssemblyInfo.cs. Note, que a maioria do tempo você vai começar com uma Global.asax arquivo com todo o código na linha. Por alguma razão, a única maneira que eu poderia chegar a este trabalho foi quebrar o global.asax para usar um code-behind e depois bunda arquivo AssemblyInfo.cs. Por isso, acaba parecido com isto.

global.asax: <% @ Application Language = "C #" Inherits = "GlobalAsax" %> global.asax.cs (em sua pasta 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();
    }
}

Agora que você tem sua aplicação chamando a configuração do log4net, você pode definir um atributo no seu conjunto informações para que log4net sabe onde procure o arquivo de configuração. AssemblyInfo.cs (em sua App_Code pasta):

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

A bandeira relógio diz log4net para manter um olho no arquivo de configuração para potenciais mudanças. Isto é útil se que pretende alterar a configuração de registrar Ouvia a erros única durante o meio do seu teste.

Para se certificar de que o log4net.config está sempre lá, adicione o log4net.config ao csproject, e configurá-lo para CopyAlways. Deve ser apresentado na pasta de depuração.

Você pode usar um script para copiar tudo para uma pasta de lançamento, ou se você estiver usando o projeto de instalação MS, adicionar manualmente o arquivo para o projeto. vai, em seguida, ser adicionada uma referência.

Outras dicas

Para o serviço do Windows o diretório atual é Windows \ system32 - e XmlConfigurator.Configure () usa FileInfo que trata caminhos relativos relativos ao diretório atual. Então log4net está à procura de seu arquivo de configuração no Windows system32 \.

XmlConfiguratorAttribute em BaseDirectory outro usos mão da aplicação, é por isso que sempre funciona.

Como alternativa, você pode fazer a seguir antes de chamar XmlConfigurator.Configure ():

System.IO.Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top