Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat zawiera przykład .NET TraceLogging, który pokazuje, jak rejestrować zdarzenie tylko wtedy, gdy poziom szczegółowości sesji jest dokładny, oraz jak rejestrować dane zdarzeń w sposób uporządkowany.
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
}
}