سؤال

سيقوم المستمع التالي بإنشاء إدخال حدث عند استدعاء Trace.Writeline. إذا كان المصدر غير موجود، فسيقوم بإنشائه في قناة السجل الافتراضية التي هي "التطبيق". أرغب في تحديد قناة سجل افتراضية أخرى ولكن بعد البحث عن 45 دقيقة لا يبدو أنني أجد الحل. أيه أفكار؟

<configuration>   
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"               
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="Source">          
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
هل كانت مفيدة؟

المحلول

غير متأكد من أنه يمكنك عبر التكوين.

على الرغم من أن EventLogTracelistener يقبل حفلات حدث مختلفة كمعلمة في المنشئ. لسوء الحظ، يتم ختم الفئة حتى لا تتمكن من الاستمتاع ببساطة عنها وتمرير قيمة مختلفة للمشغل.

على الرغم من أنه يمكنك اتباع هذا النهج وبناء فصلك الخاص (يبدو بسيطا إلى حد ما). ثم الرجوع إلى هذا النوع في التكوين الخاص بك.http://weblogs.asp.net/psteele/archive/2006/02/23/438936.aspx.

نصائح أخرى

يمكنك إعادة تأوين المستمع في السطر الأول من التعليمات البرمجية.

Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"];

يمكن تخزين القيمة في <appSettings> قسم من ملف التكوين حتى لا يزال يعتمد على التكوين:

<appSettings>
    <add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>

يمكنك العثور على حل لهذا في منشور المدونة هذا:

http://weblogs.asp.net/psteele/438936.

انها تعمل حقا!

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