اسم ملف مخصص في ملف السجل Log4Net المتداول؟

StackOverflow https://stackoverflow.com/questions/1031096

  •  06-07-2019
  •  | 
  •  

سؤال

لدينا تطبيق ASP .Net حيث نستخدم 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.

أين يوجد معرف التطبيق الفريد لكل مستخدم، والذي يتكون من رقم مكون من خمسة أرقام، على سبيل المثال؟

12345rolling-log.txt

هل هناك أي أفكار حول أفضل طريقة لتنفيذ ذلك، على افتراض أن ذلك ممكن؟

هتافات

بريت

هل كانت مفيدة؟

المحلول

وابحث عن خصائص السياق 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" />

نصائح أخرى

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

من هنا

وأعتقد أن ملف التكوين Log4Net يدعم متغيرات البيئة (مثل USERNAME) فضلا عن أنماط قابلة للتخصيص التي ينبغي أن تعطيك ما تريد.

ونظرة على "PatternString لتكوين نمط القائم" في وLog4Net V1.2.10 ويلاحظ إطلاق .

وأنا لا أعتقد أن ملف السجل لكل مستخدم هو ممكن ولكن يمكنك كتابة طبقة مخصصة بين log4net وطلبك التي بإلحاق هوية المستخدم قبل الكتابة إلى تسجيل.

ويمكنك إرسال بريد تخطيط مخصصة يرث من XmlLayoutBase.

والخروج على RollingPatternFileAppender، تماما مثل rollingfileappender بالإضافة إلى اسم الملف الديناميكي http://mysite.verizon.net/vze14bhji

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top