Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält ein .NET TraceLogging-Beispiel, das veranschaulicht, wie ein Ereignis nur protokolliert wird, wenn die Ausführlichkeitsebene der Sitzung ausführlich ist, und wie strukturierte Ereignisdaten protokolliert werden.
using System;
using System.Text;
using System.Diagnostics.Tracing;
namespace MoreSimpleTraceLoggingExamples
{
class Program
{
private static EventSource log = new EventSource(
"SimpleTraceLoggingProvider",
EventSourceSettings.EtwSelfDescribingEventFormat);
static void Main(string[] args)
{
StringBuilder cmdLine = new StringBuilder();
foreach (string arg in args)
{
cmdLine.AppendFormat("{0} ", arg);
}
// Log event verbosity level and opcode
// This event is only logged when the session verbosity level is verbose.
log.Write("CmdLine", new EventSourceOptions {Level=EventLevel.Verbose, Opcode=EventOpcode.Info },
new { Args = cmdLine.ToString().TrimEnd() });
try
{
int j = 0;
int i = 1 / j;
}
catch (Exception e)
{
var error = new Error { ErrorTitle = e.Message, CallStack = e.StackTrace, ErrType = ErrorType.Exception };
log.Write("Error", new { Error = error, ErrorType = e.ToString() });
}
}
}
[EventData] // [EventData] makes it possible to pass an instance of the class as an argument to EventSource.Write()
public class Error
{
public string ErrorTitle { get; set; }
public string CallStack { get; set; }
public ErrorType ErrType { get; set; }
}
public enum ErrorType
{
Exception,
UserError,
ProgramError
}
}