2016-05-12 18 views
1

Ich habe das folgende conversionPattern für einen log4net Appender. Ich setze eine benutzerdefinierte Eigenschaft in Code (ein DateTime-Objekt), und ich kann die Eigenschaft in einem log4net-Protokoll ausgeben.Formatieren einer benutzerdefinierten Eigenschaft in log4net

<appender name="FilteredLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="${USERPROFILE}\logs\UserConfiguredFilteredLog.txt" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="ImmediateFlush" value="true" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="100MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="Header" value="[Header]&#xD;&#xA;" /> 
    <param name="Footer" value="[Footer]&#xD;&#xA;" /> 
    <!-- I don't think I can apply custom formating on the CustomDate property--> 
    <param name="ConversionPattern" value="%d [%t] %property{LoggerCategory} [UserCustomTime:%property{CustomDate}] %-5p %c %m%n" /> 
    </layout> 
</appender> 

Meine Frage ist: Wie kann ich die CustomDate-Eigenschaft formatieren, die ich einstelle? Ich habe versucht,% d und -d und solche Sachen in verschiedenen Kombinationen hinzuzufügen, aber ich kann es nicht herausfinden. Ich bin mir nicht sicher, ob es möglich ist.

+0

Vielleicht [dies] (http://stackoverflow.com/questions/15806793/log4net-custom-property-logging) SO Frage beschreibt eine Lösung –

+0

Der einfachste Weg wäre, den Wert zu formatieren, bevor Sie es an log4net senden, Wenn Sie also den Eigenschaftswert – stuartd

Antwort

0

Es scheint, dass Sie die benutzerdefinierte Eigenschaft auf den log4net.ThreadLogicalContext vom Typ DateTime setzen. Warum nicht in ein String-Format anstelle des DateTime-Typs einfügen? Dies erleichtert die Ausgabe erheblich, da Sie versuchen, ein Layout in Ihre Konfiguration einzufügen.

+0

festlegen, weise ich es wie folgt zu: loggingEvent.Properties ["MyPropName"] = myDate (Ich habe den genauen Code nicht bei mir). Ich weiß, dass ich es als String speichern und formatieren konnte, aber ich hatte gehofft, dass der Benutzer dies auf der Ebene von app.config konfigurieren sollte, wenn möglich. –

+0

Es scheint schon sehr produktspezifisch zu sein. Ist es das Problem zu beheben http://stackoverflow.com/questions/37006757/using-a-logger-date-other-than-the-local-system-time – Peter

+0

Ja, es ist für diese Frage. Vielleicht hätte ich dort meine Erkenntnisse über die Zollimmobilie veröffentlichen sollen, aber ich hatte noch keine vollständige Antwort. –

Verwandte Themen