//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ /* */ #define TRACE namespace System.Diagnostics { using System; using System.Collections; using System.Security.Permissions; using System.Threading; /// /// Provides a set of properties and methods to trace the execution of your code. /// public sealed class Trace { private static volatile CorrelationManager correlationManager = null; // not creatble... // private Trace() { } /// /// Gets the collection of listeners that is monitoring the trace output. /// public static TraceListenerCollection Listeners { [HostProtection(SharedState=true)] get { #if FEATURE_MONO_CAS // Do a full damand new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); #endif return TraceInternal.Listeners; } } /// /// /// Gets or sets whether should be called on the after every write. /// /// public static bool AutoFlush { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] get { return TraceInternal.AutoFlush; } [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] set { TraceInternal.AutoFlush = value; } } public static bool UseGlobalLock { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] get { return TraceInternal.UseGlobalLock; } [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] set { TraceInternal.UseGlobalLock = value; } } public static CorrelationManager CorrelationManager { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] get { if (correlationManager == null) correlationManager = new CorrelationManager(); return correlationManager; } } /// /// Gets or sets the indent level. /// public static int IndentLevel { get { return TraceInternal.IndentLevel; } set { TraceInternal.IndentLevel = value; } } /// /// /// Gets or sets the number of spaces in an indent. /// /// public static int IndentSize { get { return TraceInternal.IndentSize; } set { TraceInternal.IndentSize = value; } } /// /// Clears the output buffer, and causes buffered data to /// be written to the . /// [System.Diagnostics.Conditional("TRACE")] public static void Flush() { TraceInternal.Flush(); } /// /// Clears the output buffer, and then closes the so that they no /// longer receive debugging output. /// [System.Diagnostics.Conditional("TRACE")] public static void Close() { #if FEATURE_MONO_CAS // Do a full damand new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); #endif TraceInternal.Close(); } /// /// Checks for a condition, and outputs the callstack if the /// condition /// is . /// [System.Diagnostics.Conditional("TRACE")] public static void Assert(bool condition) { TraceInternal.Assert(condition); } /// /// Checks for a condition, and displays a message if the condition is /// . /// [System.Diagnostics.Conditional("TRACE")] public static void Assert(bool condition, string message) { TraceInternal.Assert(condition, message); } /// /// Checks for a condition, and displays both messages if the condition /// is . /// [System.Diagnostics.Conditional("TRACE")] public static void Assert(bool condition, string message, string detailMessage) { TraceInternal.Assert(condition, message, detailMessage); } /// /// Emits or displays a message for an assertion that always fails. /// [System.Diagnostics.Conditional("TRACE")] public static void Fail(string message) { TraceInternal.Fail(message); } /// /// Emits or displays both messages for an assertion that always fails. /// [System.Diagnostics.Conditional("TRACE")] public static void Fail(string message, string detailMessage) { TraceInternal.Fail(message, detailMessage); } public static void Refresh() { #if CONFIGURATION_DEP DiagnosticsConfiguration.Refresh(); #endif Switch.RefreshAll(); TraceSource.RefreshAll(); TraceInternal.Refresh(); } [System.Diagnostics.Conditional("TRACE")] public static void TraceInformation(string message) { TraceInternal.TraceEvent(TraceEventType.Information, 0, message, null); } [System.Diagnostics.Conditional("TRACE")] public static void TraceInformation(string format, params object[] args) { TraceInternal.TraceEvent(TraceEventType.Information, 0, format, args); } [System.Diagnostics.Conditional("TRACE")] public static void TraceWarning(string message) { TraceInternal.TraceEvent(TraceEventType.Warning, 0, message, null); } [System.Diagnostics.Conditional("TRACE")] public static void TraceWarning(string format, params object[] args) { TraceInternal.TraceEvent(TraceEventType.Warning, 0, format, args); } [System.Diagnostics.Conditional("TRACE")] public static void TraceError(string message) { TraceInternal.TraceEvent(TraceEventType.Error, 0, message, null); } [System.Diagnostics.Conditional("TRACE")] public static void TraceError(string format, params object[] args) { TraceInternal.TraceEvent(TraceEventType.Error, 0, format, args); } /// /// Writes a message to the trace listeners in the /// collection. /// [System.Diagnostics.Conditional("TRACE")] public static void Write(string message) { TraceInternal.Write(message); } /// /// Writes the name of the /// parameter to the trace listeners in the collection. /// [System.Diagnostics.Conditional("TRACE")] public static void Write(object value) { TraceInternal.Write(value); } /// /// Writes a category name and message to the trace listeners /// in the collection. /// [System.Diagnostics.Conditional("TRACE")] public static void Write(string message, string category) { TraceInternal.Write(message, category); } /// /// Writes a category name and the name of the value parameter to the trace listeners /// in the collection. /// [System.Diagnostics.Conditional("TRACE")] public static void Write(object value, string category) { TraceInternal.Write(value, category); } /// /// Writes a message followed by a line terminator to the /// trace listeners in the collection. /// The default line terminator is a carriage return followed by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLine(string message) { TraceInternal.WriteLine(message); } /// /// Writes the name of the parameter followed by a line terminator to the trace listeners in the collection. The default line /// terminator is a carriage return followed by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLine(object value) { TraceInternal.WriteLine(value); } /// /// Writes a category name and message followed by a line terminator to the trace /// listeners in the /// collection. The default line terminator is a carriage return followed by a line /// feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLine(string message, string category) { TraceInternal.WriteLine(message, category); } /// /// Writes a name and the name of the parameter followed by a line /// terminator to the trace listeners in the collection. The default line /// terminator is a carriage return followed by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLine(object value, string category) { TraceInternal.WriteLine(value, category); } /// /// Writes a message to the trace listeners in the collection /// if a condition is . /// [System.Diagnostics.Conditional("TRACE")] public static void WriteIf(bool condition, string message) { TraceInternal.WriteIf(condition, message); } /// /// Writes the name of the /// parameter to the trace listeners in the collection if a condition is /// . /// [System.Diagnostics.Conditional("TRACE")] public static void WriteIf(bool condition, object value) { TraceInternal.WriteIf(condition, value); } /// /// Writes a category name and message to the trace listeners in the /// collection if a condition is . /// [System.Diagnostics.Conditional("TRACE")] public static void WriteIf(bool condition, string message, string category) { TraceInternal.WriteIf(condition, message, category); } /// /// Writes a category name and the name of the parameter to the trace /// listeners in the collection /// if a condition is . /// [System.Diagnostics.Conditional("TRACE")] public static void WriteIf(bool condition, object value, string category) { TraceInternal.WriteIf(condition, value, category); } /// /// Writes a message followed by a line terminator to the trace listeners in the /// collection if a condition is /// . The default line terminator is a carriage return followed /// by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLineIf(bool condition, string message) { TraceInternal.WriteLineIf(condition, message); } /// /// Writes the name of the parameter followed by a line terminator to the /// trace listeners in the collection /// if a condition is /// . The default line /// terminator is a carriage return followed by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLineIf(bool condition, object value) { TraceInternal.WriteLineIf(condition, value); } /// /// Writes a category name and message followed by a line terminator to the trace /// listeners in the collection if a condition is /// . The default line terminator is a carriage return followed by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLineIf(bool condition, string message, string category) { TraceInternal.WriteLineIf(condition, message, category); } /// /// Writes a category name and the name of the parameter followed by a line /// terminator to the trace listeners in the collection /// if a is . The /// default line terminator is a carriage return followed by a line feed (\r\n). /// [System.Diagnostics.Conditional("TRACE")] public static void WriteLineIf(bool condition, object value, string category) { TraceInternal.WriteLineIf(condition, value, category); } /// /// [To be supplied.] /// [System.Diagnostics.Conditional("TRACE")] public static void Indent() { TraceInternal.Indent(); } /// /// [To be supplied.] /// [System.Diagnostics.Conditional("TRACE")] public static void Unindent() { TraceInternal.Unindent(); } } }