سؤال

عند تسجيل الدخول مع Log4Net فإنه من السهل جدا أن نضع الطبقة التي تسمى تسجيل الدخول إلى ملف السجل.لقد وجدت في الماضي أن هذا يجعل من السهل جدا أن تتبع من خلال المدونة و نرى تدفق من خلال الطبقات.في Log4Net يمكنني استخدام %مسجل الملكية في تحويل نمط مثل ذلك:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

و هذا يعطيني الناتج أريد:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

يمكنك أن ترى من إخراج هذه الفئة التي تسمى سجل Log4NetTechDemo.اختبار, لذلك أنا يمكن أن تتبع الخطأ مرة أخرى إلى تلك الفئة بسهولة تامة.

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

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

المحلول

إضافة طريقة الاستدعاء إلى LogEntry هو ExtendedProperties القاموس ؛ بافتراض أنك لم إزالة ExtendedProperties الرموز من المنسق قالب بالطبع.

وضع شيء مثل هذا في تسجيل المجمع:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

واصفا هذا ينتج شيئا مثل هذا في نهاية السجل:

Extended Properties: Called from - LAB_Demo.Tester

نصائح أخرى

نحن havn't وجدت طريقة سهلة دون ضرب StackTrace.إذا كان استثناء ، نحن مجرد الاستيلاء من ذلك:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

بالنسبة الشطي البنود, نحن مجرد كتابة السلسلة.لدينا مقتطف قادر على الاستيلاء على اسم الفئة على الإدراج.كما تعلن const سلسلة مع اسم الفئة.

ليست جميلة ، ولكن هذا أفضل لقد وجدت.آمل شخص آخر لديه bettwe الإجابة في هذا الموضوع :)

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