Custom WCF MSMQ-Tracer

Posted in Allgemein on November 30th, 2009 by Andreas Schwarz

WCF Custom MSMQ Tracer – Sample

Das Standard-Traceing im WCF Framework ist erstaunlich einfach anzuwenden und zu konfigurieren. Auch das im Framework enthaltene Analysetool ist ganz brauchbar.

So viel Luxus ist man gar nicht gewohnt wenn man vorher hauptsächlich mit dem WSE-Framework zu tun hatte…

Leider ist Microsoft den Weg nicht komplett zu Ende gegangen. Gibt man sich nicht mit der Erzeugung von Logdateien zufrieden, sondern will das Ganze in eine Datenbank  bzw. Message Queue persistieren darf man wieder selbst tätig werden.

Ich würde davon abraten das komplette Traceing direkt synchron aufzusetzen. Es hat sich bewährt die Nachrichten zuerst einmal zwischenzulagern und die Verarbeitung dann asynchron auszuführen.

public class MsmqTracer : TraceListener
{
   public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
        	{
   // ein übler hack um app settings in class libs verfügbar zu machen
   string traceQueue = ConfigurationManager.AppSettings["TraceQueue"];

   if (!string.IsNullOrEmpty(traceQueue))
   {
      try
      {
      MessageQueue msmq = new MessageQueue(traceQueue);
      MessageQueueTransaction trans = new MessageQueueTransaction();

      trans.Begin();
      Message msg = new Message(data.ToString(), new XmlMessageFormatter());

      msmq.Send(msg, trans);
      trans.Commit();
      }

      catch (Exception msmqEx)
      {
         Debug.WriteLine(string.Format("Error while persisting trace: {0}", msmqEx.ToString()));
      }
   }
   else
   {
      Debug.WriteLine("Missing MSMQ Trace");
   }
}

public override void Write(string message) {}

public override void WriteLine(string message) {}


 
  
   

     
      
       
      
       
       
      
   
  

  
   
  
 

 
  
  
   
  

  
   
    
     
    
   
  

  
   
    
     
      
       
      
     
    
  
 

 
  
   
  


Tags: , ,

WCF Performance Counter

Posted in Allgemein on November 30th, 2009 by Andreas Schwarz

Das WCF-Framework stellt eine Unzahl an Meßwerten zur Verfügung.

Leider ist das Ganze kaum dokumentiert…

Die Aktivierung der Counter ist denkbar einfach (wenn man mal rausgefunden hat dass es sowas überhaupt gibt…) und erfolgt durch einen Eintrag in der App.Config des Hosts

PerfCountersConfig

Die entsprechenden Werte lassen sich dann direkt mit perfmon anzeigen und auswerten.

perfmon1

perfmon2

Tags: ,