Frage

Ich habe einen windows-Dienst, bei dem die app.config-Datei und die log4net.config-Dateien zu trennen.Die Protokollierung nicht funktioniert.

In my app.config Datei habe ich den folgenden Abschnitt:

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

Dies funktioniert, wenn der Wert, den ich geben Sie einen absoluten Pfad zu der log4net.config-Datei.

Tun ich müssen, geben Sie einen absoluten Pfad, um das log4net.cong?Sowohl die log4net.config und app.config-Datei im selben Ordner wie die ausführbare Datei.

irgendwelche Ideen?

Parag

War es hilfreich?

Lösung

Vielleicht ist dies hilfreich (Bewegen Sie Ihre Log4Net-Konfiguration aus dem web.config mit ASP.NET 2.0 web sites.).

Hier sind die Teile, die Sie interessieren könnten:

Sagen, die Anwendung zu konfigurieren log4net mit dieser config-Datei.Es sind wirklich zwei spots für diese.Ersten, die Globale.asax, und zweitens die assemblyInfo.cs-Datei.Beachten Sie, dass die meisten die Zeit, die Sie beginnen mit einem global.asax-Datei mit allen Codes inline.Aus welchem Grund auch immer, der einzige so konnte ich diese zu arbeiten, war Pause der globalen.asax-up zu verwenden code-behind und dann in den Arsch assemblyInfo.cs-Datei.Also es endet auf der Suche wie dieses.

global.asax:<%@ Application Language="C#" Inherits="GlobalAsax" %> global.asax.cs (in Ihrem App_Code-Ordner):

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

Jetzt haben Sie Ihre Anwendung aufrufen von log4net-Konfiguration, die Sie kann ein Attribut in der assembly info so, dass log4net weiß, wo suchen Sie die Konfigurationsdatei. AssemblyInfo.cs (in Ihrem App_Code Ordner):

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

Die Uhr flag erzählt log4net zu halten Auge auf die Konfigurations-Datei für mögliche änderungen.Dies ist hilfreich, wenn Sie wollen zu ändern die Konfiguration anmelden, alles, was zu Fehlern nur während der Mitte des Tests.

Um sicherzustellen, dass die log4net.config ist immer dort, fügen Sie die log4net.config, um die csproject, und legen Sie es auf CopyAlways.Es präsentiert werden soll, die in den debug-Ordner.

Sie können ein Skript verwenden, zu kopieren, alles, was zu einem release-Ordner, oder verwenden Sie MS-setup-Projekt, manuell hinzuzufügen, die Datei in das Projekt.Ein Verweis wird dann Hinzugefügt werden.

Andere Tipps

Für Windows-Dienst ist das aktuelle Verzeichnis Windows \ system32 - und XmlConfigurator.Configure () verwendet, die Fileinfo relative Pfade relativ zum aktuellen Verzeichnis behandelt. So log4net sucht seine Konfigurationsdatei in Windows \ System32.

XmlConfiguratorAttribute auf der anderen Seite verwendet Basedirectory der Anwendung, das ist, warum es funktioniert immer.

Alternativ können Sie folgende vor XmlConfigurator.Configure () aufrufen:

System.IO.Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top