2009-06-23 146 views
18

我們有一個ASP .NET應用程序,其中我們使用log4net的在應用程序內登錄細節 - 什麼新東西 - 和滾動日誌文件名是在通常的格式:滾動的Log4Net日誌文件中的自定義文件名?

rolling-log.txt 
rolling-log.txt.1 
rolling-log.txt.2 etc. 

一個應用程序的每個用戶增加對於日誌文件,日誌文件對於特定用戶的情況可能很難讀取,因此,我們希望修改配置文件以單獨記錄用戶的日誌詳細信息,每個日誌文件都寫入特定文件,例如

<applicationId>rolling-log.txt 
<applicationId>rolling-log.txt.1 
<applicationId>rolling-log.txt.2 
etc. 

其中每個用戶的唯一應用程序ID由五位數字組成,例如,

12345rolling-log.txt 

任何想法的最佳實現方式,假設它是可能的?

乾杯

佈雷特

回答

14

找log4net的上下文屬性...

在你的代碼

log4net.GlobalContext.Properties["id"] = "12345"; 

然後

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("configPath")); 
在log4net的配置文件

<file type="log4net.Util.PatternString" 
      value="%property{id}rolling-log.txt" /> 
1

我不認爲每個用戶該日誌文件是可能的,但你可以log4net的和你的應用程序,預先考慮用戶ID寫入日誌之前之間編寫自定義層。

1

您可以通過從XmlLayoutBase繼承來編寫自定義佈局。

8

我相信Log4Net配置文件支持環境變量(例如USERNAME)以及可定製的模式,這些模式應該會給你你想要的。

查看the Log4Net V1.2.10 release notes中的「PatternString for pattern based configuration」。

+0

+1這是做它的方式。 – 2009-07-10 15:27:42

34
<file type="log4net.Util.PatternString"> 
    <conversionPattern value="C:\Logs\log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log" /> 
</file> 

from here

+0

非常有用,增加投票。 – Roylee 2013-10-03 12:08:11

+1

N.B.用上面的替換``元素。 – 2014-02-20 18:36:15