Trace.WriteLine(“Some trace data”);
Trace.TraceWarning(“Some worning information”);
Trace.TraceError(“An error that appeared in the application.”);
We can do a log of thinks with this class. It is not something new.In the configuration file of our application we need to add a new trace listener that is able to write all the trace information to Azure Tables.
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics” name="DiagToAzureTables"></add>
</listeners>
</trace>
</system.diagnostics>
Next step is to add the listener to the trace listener collection each time when your application start. At this step I prefer to set auto-flush to true. In this way all the content will be send automatically to the trace and the risk to lose data when the machine is instable and crash is very low.System.Diagnostics.Trace.Listeners.Add(myListener);
System.Diagnostics.Trace.AutoFlush = true;
On the internet you will find a lot of implementation of trace listener. The one that I prefer to use is the most common one. One of the implementation can be found in the following location http://www.wou.edu/~rvitolo06/WATK/Labs/WindowsAzureDebugging/Source/Assets/CS/AzureDiagnostics/TableStorageTraceListener.cs If we check the Azure Tables of our account we will see that a new table was created with the following structure:
- PartitionKey - D10 of event timestamp >> 30
- RowKey - D19 of event timestamp
- EventTickCount – event timestamp
- Level - event type
- EventId – event id,
- Pid - event process id
- Tid - event thead id
- Message - event message
is correlated to the time when the system/process have been started.
Remarks: Base on the hardware configuration we can have a frequency tick per second or per nanoseconds. We can determine what is the frequency using StopWatch.Frequency.If we want to order events based on the event tick count, we need to be aware that this will be valid only for events that were generated by the same processor (Pid). For different processor on the same machine the EventTickCount can be different.
Never try to order all the event of a Trace table from Windows Azure based on the EventTickCount. You can use it in combination with Pid. Also, the TimeStamp column of Azure Table store the time when the message was written to Azure Table and not the moment when the event was generated.
0 comments:
Post a Comment