Como configurar log4net para um c # serviço do Windows
-
05-07-2019 - |
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
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 suaApp_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);