2016-05-12 62 views
1

我有一個log4net appender的以下conversionPattern。我在代碼中設置一個自定義屬性(一個DateTime對象),並且我可以將該屬性輸出到log4net日誌。在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> 

我的問題是:我如何格式化我設置的CustomDate屬性?我試過在各種組合中添加%d和-d以及類似的東西,但無法弄清楚。我不確定是否有可能。

+0

也許[this](http://stackoverflow.com/questions/15806793/log4net-custom-property-logging)SO問題描述了一個解決方案 –

+0

最簡單的方法是在將值發送到log4net之前對其進行格式化,即當你設置屬性值 – stuartd

回答

0

看來你正在將自定義屬性放在類型爲DateTime的log4net.ThreadLogicalContext上。爲什麼不把它換成字符串格式而不是DateTime類型。這使得輸出更容易,因爲試圖將佈局添加到配置中。

+0

是的,我分配它像:loggingEvent.Properties [「MyPropName」] = myDate(我沒有確切的代碼在我身上)。我意識到我可以將它存儲爲一個字符串並將其格式化爲我選擇的格式,但我希望如果可能的話讓用戶在app.config級別配置它。 –

+0

它似乎已經非常具體產品。它是解決你問題http://stackoverflow.com/questions/37006757/using-a-logger-date-other-than-the-local-system-time – Peter

+0

是的,這是爲了這個問題。也許我應該在那裏發佈我的調查結果關於自定義屬性,但我還沒有完整的答案。 –