2009-06-23 10 views
18

Biz ASP .Net uygulama var ve haddeleme oturum dosya olağan biçimde şunlardır: Uygulamanın her kullanıcı eklerYığın halinde özel dosya adı Log4Net logfile? Orada yeni bir şey - - biz uygulaması içinde ayrıntıları günlüğe Log4Net aracılığı ile kullanabilir

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

A günlük dosyasına, günlük dosyasının belirli bir kullanıcının durumu için okunması zor olabilir ve bu nedenle, kullanıcının günlük ayrıntılarını ayrı ayrı kaydetmek için config dosyasını bir şekilde değiştirmek isteriz. Her bir kullanıcının benzersiz uygulama kimliği, beş haneli bir numaradan oluşur, örn.

12345rolling-log.txt 

Bunu gerçekleştirmenin en iyi yolu ile ilgili herhangi bir fikir var mı?

Alkış

Brett

cevap

14

bakış ... kodunuzda

:

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

log4net yapılandırma dosyasında

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("configPath")); 

:

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

Ben kullanıcı başına bu günlük dosyası mümkün olduğunu düşünmüyorum ama log4net ve log yazmadan önce kullanıcı kimliği prepends uygulamanız arasındaki özel katmanı yazabilirsiniz.

1

XmlLayoutBase öğesinden devralınarak özel bir düzen yazabilirsiniz.

8

Log4Net yapılandırma dosyasının, ortam değişkenlerini (örn. USERNAME) ve istediğiniz şeyi vermesi gereken özelleştirilebilir kalıpları desteklediğine inanıyorum.

the Log4Net V1.2.10 release notes'da "Desen temelli yapılandırma için desen dizisi" konusuna bakın. log4net Bağlam Özellikleri için

+0

1 gibi bu bunu yapmak için bir yoldur. –

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

from here

+0

çok faydalı, yukarı-oy. – Roylee

+1

N.B. Yukarıdaki ile "öğesini değiştirin. –

+0

çok teşekkürler, sizin için – Zaragon