4 Stimmen

Wie kann ich log4net dazu bringen, in einen Dateinamen zu schreiben, der auf der Klasse basiert, die den Logger instanziiert hat?

Das ist mein Dilemma. Ich habe eine RollingFileAppender . Ich habe eine BufferingForwardingAppender . Der Weiterleitungs-Appender schreibt an den Datei-Appender. Mein Datei-Appender benötigt eine Datei, in die er schreiben kann. Ich möchte, dass die Datei wie folgt benannt wird %Called Assembly Type%log.txt , wobei %Aufgerufene Baugruppenart% die aufgerufene Baugruppenart ist (Gasp!)

Ich beabsichtige, dies wie folgt zu verwenden:

Aufruf von einem Dienst namens " OkilyDokily ":

var log4NetLogger = LogManager.GetLogger(GetMyAssemblyName());
log4NetLogger.LogInfo("Toodleoo");

Aufruf von einem Dienst namens " Neighborinos ":

var log4NetLogger = LogManager.GetLogger(GetMyAssemblyName());
log4NetLogger.LogInfo("Toodleoo");

Ich erwarte, dass ich 2 Protokolldateien habe, eine mit dem Namen OkilyDokilylog.txt und einer namens Neighborinoslog.txt

Gibt es eine Möglichkeit, dies in log4net zu tun? Ist mein BufferingForwardingAppender ein Problem sein wird? Ich habe diese Konfiguration ausprobiert, aber %logger wird einfach in die Zeichenkette übersetzt logger :(

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString">
        <conversionPattern value="C:\testlogs\%logger log.txt" />
    </file>
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="5KB" />
    <staticLogFileName value="true" />
    <countDirection value="1"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-8level %-21date{M/d/yyyy H:m:ss} %message%newline" />
    </layout>
</appender>

2 Stimmen

Das ist an sich eine gute Frage, aber ich lese besonders gerne Fragen, die einen gewissen Charakter haben. Und Ned Flanders ist dafür gar keine schlechte Wahl, also +1.

2voto

code4life Punkte 15309

Vielleicht hilft Ihnen dieser kleine Leckerbissen weiter: Sie müssen die RollingFileAppender und nach Änderung der File Eigenschaft, rufen Sie die ActivateOptions Methode, wie unten:

var myPath = "C:\\";
var log = LogManager.GetLogger(typeof(MySpecificAssembly).Name);
XmlConfigurator.Configure();

var rfa = (RollingFileAppender)LogManager.GetRepository().GetAppenders()
    .First(c => c.Name == "RollingFileAppender");

rfa.File = myPath + typeof(MySpecificAssembly).Name + ".log";
rfa.ActivateOptions();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X