سؤال

أنا جديد مع Tracesource ، لذا أقوم ببعض التحقيقات في كيفية استخدامه/ لا يمكن استخدامه (إيجابيات وسلبيات أساسًا).

شيء يعجبني هو أنه يمكنني الحصول على مقالب من داخل .NET Framework نفسه ، لذلك قمت بإنشاء تطبيق صغير لاختبار ذلك واستخدام المصدر المخصص الخاص بي معًا (حيث أتوقع استخدامه) ، مثل ذلك:

class Program
{
    static void Main(string[] args)
    {
        SmtpClient smtp = new SmtpClient();
        var mm = new MailMessage();
        mm.To.Add("me@my-site.com");
        mm.Subject = "Trace Testing";
        smtp.Send(mm);

        var ts = new TraceSource("MyCustomTracer");

        ts.TraceEvent(TraceEventType.Error, 0, "This is an error");
        ts.TraceEvent(TraceEventType.Information, 0, "Just debugging now");
    }
}

ثم أضفت بعض المستمعين إلى App.config مثله:

<system.diagnostics>
<trace autoflush="true" />
<sources>
  <source name="MyCustomTracer"
          switchValue="Information, ActivityTracing">
    <listeners>
      <add name="sdt"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData= "traceOutput.log" />
    </listeners>
  </source>
  <source name="System.Net"
          switchValue="Information, ActivityTracing, Critical">
    <listeners>
      <add name="sdt"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData= "traceOutput.log" />
    </listeners>
  </source>
</sources>
</system.diagnostics>

لكن لسبب ما عندما أقوم بتشغيل التطبيق ، حدثان أقوم بتسجيله عبر MyCustomTracer لا تذهب إلى ملف السجل إلا إذا علقت SmtpClient الاشياء (أي - استخدم فقط التتبع المخصص).

كنت أتوقع أنه يمكن استخدام العديد من الآثار المترابطة بالطريقة التي أحاول استخدامها ، لست متأكدًا من الخطأ الذي يحدث.

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

المحلول

وجدت المشكلة ، خطأً كاملاً في NOOB ، يحتوي كل من عناصر التتبع على مستمع يكتب إلى نفس الملف. على الرغم من أنني لست متأكدًا تمامًا من الخطأ ، إلا أنه سيكون نوعًا من الصدام عند الكتابة.

إذا كنت ترغب في الحصول على مصادر متعددة باستخدام نفس المستمع الذي تحتاجه لاستخدام <sharedListeners /> مثله:

<system.diagnostics>
<trace autoflush="true" />
<sources>
  <source name="MyCustomTracer"
          switchValue="Information, ActivityTracing">
    <listeners>
       <add name="sdt" />
    </listeners>
  </source>
  <source name="System.Net"
          switchValue="Information, ActivityTracing, Critical">
    <listeners>
      <add name="sdt" />
    </listeners>
  </source>
</sources>
<sharedListeners>
    <add name="sdt"
        type="System.Diagnostics.XmlWriterTraceListener"
        initializeData= "traceOutput.log" />
</sharedListeners>
</system.diagnostics>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top