Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / System / Diagnostics / TraceListener.cs / 1 / TraceListener.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Diagnostics { using System; using System.Text; using System.Security.Permissions; using System.Collections.Specialized; using System.Globalization; using System.Runtime.InteropServices; using System.Collections; using System.Configuration; using System.Runtime.Versioning; ////// [HostProtection(Synchronization=true)] public abstract class TraceListener : MarshalByRefObject, IDisposable { int indentLevel; int indentSize = 4; TraceOptions traceOptions = TraceOptions.None; bool needIndent = true; string listenerName; TraceFilter filter = null; StringDictionary attributes; internal string initializeData; ///Provides the ///base class for the listeners who /// monitor trace and debug output. /// protected TraceListener () { } ///Initializes a new instance of the ///class. /// protected TraceListener(string name) { this.listenerName = name; } public StringDictionary Attributes { get { if (attributes == null) attributes = new StringDictionary(); return attributes; } } ///Initializes a new instance of the ///class using the specified name as the /// listener. /// public virtual string Name { get { return (listenerName == null) ? "" : listenerName; } set { listenerName = value; } } public virtual bool IsThreadSafe { get { return false; } } ///Gets or sets a name for this ///. /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } ////// protected virtual void Dispose(bool disposing) { return; } ////// public virtual void Close() { return; } ///When overridden in a derived class, closes the output stream /// so that it no longer receives tracing or debugging output. ////// public virtual void Flush() { return; } ///When overridden in a derived class, flushes the output buffer. ////// public int IndentLevel { get { return indentLevel; } set { indentLevel = (value < 0) ? 0 : value; } } ///Gets or sets the indent level. ////// public int IndentSize { get { return indentSize; } set { if (value < 0) throw new ArgumentOutOfRangeException("IndentSize", value, SR.GetString(SR.TraceListenerIndentSize)); indentSize = value; } } [ ComVisible(false) ] public TraceFilter Filter { get { return filter; } set { filter = value; } } ///Gets or sets the number of spaces in an indent. ////// protected bool NeedIndent { get { return needIndent; } set { needIndent = value; } } [ ComVisible(false) ] public TraceOptions TraceOutputOptions { get { return traceOptions; } set { if (( (int) value >> 6) != 0) { throw new ArgumentOutOfRangeException("value"); } traceOptions = value; } } internal void SetAttributes(Hashtable attribs) { TraceUtils.VerifyAttributes(attribs, GetSupportedAttributes(), this); attributes = new StringDictionary(); attributes.contents = attribs; } ///Gets or sets a value indicating whether an indent is needed. ////// public virtual void Fail(string message) { Fail(message, null); } ///Emits or displays a message for an assertion that always fails. ////// public virtual void Fail(string message, string detailMessage) { StringBuilder failMessage = new StringBuilder(); failMessage.Append(SR.GetString(SR.TraceListenerFail)); failMessage.Append(" "); failMessage.Append(message); if (detailMessage != null) { failMessage.Append(" "); failMessage.Append(detailMessage); } WriteLine(failMessage.ToString()); } virtual protected internal string[] GetSupportedAttributes() { return null; } ///Emits or displays messages for an assertion that always fails. ////// public abstract void Write(string message); ///When overridden in a derived class, writes the specified /// message to the listener you specify in the derived class. ////// public virtual void Write(object o) { if (Filter != null && !Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, null, null, o)) return; if (o == null) return; Write(o.ToString()); } ///Writes the name of the ///parameter to the listener you specify when you inherit from the /// class. /// public virtual void Write(string message, string category) { if (Filter != null && !Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, message)) return; if (category == null) Write(message); else Write(category + ": " + ((message == null) ? string.Empty : message)); } ///Writes a category name and a message to the listener you specify when you /// inherit from the ////// class. /// public virtual void Write(object o, string category) { if (Filter != null && !Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, category, null, o)) return; if (category == null) Write(o); else Write(o == null ? "" : o.ToString(), category); } ///Writes a category name and the name of the ///parameter to the listener you /// specify when you inherit from the /// class. /// protected virtual void WriteIndent() { NeedIndent = false; for (int i = 0; i < indentLevel; i++) { if (indentSize == 4) Write(" "); else { for (int j = 0; j < indentSize; j++) { Write(" "); } } } } ///Writes the indent to the listener you specify when you /// inherit from the ////// class, and resets the property to . /// public abstract void WriteLine(string message); ///When overridden in a derived class, writes a message to the listener you specify in /// the derived class, followed by a line terminator. The default line terminator is a carriage return followed /// by a line feed (\r\n). ////// public virtual void WriteLine(object o) { if (Filter != null && !Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, null, null, o)) return; WriteLine(o == null ? "" : o.ToString()); } ///Writes the name of the ///parameter to the listener you specify when you inherit from the class, followed by a line terminator. The default line terminator is a /// carriage return followed by a line feed /// (\r\n). /// public virtual void WriteLine(string message, string category) { if (Filter != null && !Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, message)) return; if (category == null) WriteLine(message); else WriteLine(category + ": " + ((message == null) ? string.Empty : message)); } ///Writes a category name and a message to the listener you specify when you /// inherit from the ///class, /// followed by a line terminator. The default line terminator is a carriage return followed by a line feed (\r\n). /// public virtual void WriteLine(object o, string category) { if (Filter != null && !Filter.ShouldTrace(null, "", TraceEventType.Verbose, 0, category, null, o)) return; WriteLine(o == null ? "" : o.ToString(), category); } // new write methods used by TraceSource [ ComVisible(false) ] public virtual void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, object data) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, null, null, data)) return; WriteHeader(source, eventType, id); string datastring = String.Empty; if (data != null) datastring = data.ToString(); WriteLine(datastring); WriteFooter(eventCache); } [ ComVisible(false) ] public virtual void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, params object[] data) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, null, null, null, data)) return; WriteHeader(source, eventType, id); StringBuilder sb = new StringBuilder(); if (data != null) { for (int i=0; i< data.Length; i++) { if (i != 0) sb.Append(", "); if (data[i] != null) sb.Append(data[i].ToString()); } } WriteLine(sb.ToString()); WriteFooter(eventCache); } [ ComVisible(false) ] public virtual void TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, int id) { TraceEvent(eventCache, source, eventType, id, String.Empty); } // All other TraceEvent methods come through this one. [ ComVisible(false) ] public virtual void TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, int id, string message) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, message)) return; WriteHeader(source, eventType, id); WriteLine(message); WriteFooter(eventCache); } [ ComVisible(false) ] public virtual void TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, int id, string format, params object[] args) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, format, args)) return; WriteHeader(source, eventType, id); if (args != null) WriteLine(String.Format(CultureInfo.InvariantCulture, format, args)); else WriteLine(format); WriteFooter(eventCache); } [ ComVisible(false) ] public virtual void TraceTransfer(TraceEventCache eventCache, String source, int id, string message, Guid relatedActivityId) { TraceEvent(eventCache, source, TraceEventType.Transfer, id, message + ", relatedActivityId=" + relatedActivityId.ToString()); } private void WriteHeader(String source, TraceEventType eventType, int id) { Write(String.Format(CultureInfo.InvariantCulture, "{0} {1}: {2} : ", source, eventType.ToString(), id.ToString(CultureInfo.InvariantCulture))); } [ResourceExposure(ResourceScope.None)] [ResourceConsumption(ResourceScope.Process, ResourceScope.Process)] private void WriteFooter(TraceEventCache eventCache) { if (eventCache == null) return; indentLevel++; if (IsEnabled(TraceOptions.ProcessId)) WriteLine("ProcessId=" + eventCache.ProcessId); if (IsEnabled(TraceOptions.LogicalOperationStack)) { Write("LogicalOperationStack="); Stack operationStack = eventCache.LogicalOperationStack; bool first = true; foreach (Object obj in operationStack) { if (!first) Write(", "); else first = false; Write(obj.ToString()); } WriteLine(String.Empty); } if (IsEnabled(TraceOptions.ThreadId)) WriteLine("ThreadId=" + eventCache.ThreadId); if (IsEnabled(TraceOptions.DateTime)) WriteLine("DateTime=" + eventCache.DateTime.ToString("o", CultureInfo.InvariantCulture)); if (IsEnabled(TraceOptions.Timestamp)) WriteLine("Timestamp=" + eventCache.Timestamp); if (IsEnabled(TraceOptions.Callstack)) WriteLine("Callstack=" + eventCache.Callstack); indentLevel--; } internal bool IsEnabled(TraceOptions opts) { return (opts & TraceOutputOptions) != 0; } } }Writes a category /// name and the name of the ///parameter to the listener you /// specify when you inherit from the /// class, followed by a line terminator. The default line terminator is a carriage /// return followed by a line feed (\r\n).
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ViewCellRelation.cs
- ScrollViewerAutomationPeer.cs
- ExtentCqlBlock.cs
- ValidatingPropertiesEventArgs.cs
- ToolStripComboBox.cs
- GridViewCommandEventArgs.cs
- SByteStorage.cs
- Dictionary.cs
- ProfileService.cs
- EntityContainer.cs
- Variable.cs
- SQLByteStorage.cs
- XmlLoader.cs
- ToolboxItem.cs
- InstanceLockedException.cs
- ConnectionsZone.cs
- ToolStripItemTextRenderEventArgs.cs
- ClientTargetSection.cs
- CollectionChangedEventManager.cs
- EntityContainerRelationshipSetEnd.cs
- ProcessModelInfo.cs
- XmlElementAttributes.cs
- arclist.cs
- VectorValueSerializer.cs
- RootBrowserWindowProxy.cs
- ECDiffieHellman.cs
- NavigationPropertyEmitter.cs
- RectangleHotSpot.cs
- SafeFindHandle.cs
- PointAnimationUsingKeyFrames.cs
- HttpGetProtocolReflector.cs
- CancellationTokenRegistration.cs
- PaintValueEventArgs.cs
- SpeechSynthesizer.cs
- OneWayBindingElementImporter.cs
- DataGridViewLinkColumn.cs
- WebControl.cs
- DbDataSourceEnumerator.cs
- NewArrayExpression.cs
- ValidationVisibilityAttribute.cs
- ValidationSettings.cs
- Properties.cs
- SocketInformation.cs
- PropertyInformationCollection.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- ZipIOLocalFileBlock.cs
- PointAnimationUsingPath.cs
- PerformanceCounterLib.cs
- Page.cs
- FlowLayoutSettings.cs
- XmlSchemaElement.cs
- ComplexLine.cs
- DataBinding.cs
- PackageDocument.cs
- PreservationFileReader.cs
- RecipientInfo.cs
- List.cs
- ObjectListSelectEventArgs.cs
- GeneralTransform3DTo2DTo3D.cs
- RouteItem.cs
- CurrentChangingEventManager.cs
- PageHandlerFactory.cs
- StickyNoteHelper.cs
- Transform3D.cs
- StrongNameKeyPair.cs
- HandlerFactoryWrapper.cs
- LinqDataSourceEditData.cs
- NamespaceQuery.cs
- ClientUrlResolverWrapper.cs
- CatalogPartCollection.cs
- EditBehavior.cs
- InfoCardBaseException.cs
- LayoutDump.cs
- NameService.cs
- ValidationErrorCollection.cs
- FixedBufferAttribute.cs
- PresentationTraceSources.cs
- ScrollViewer.cs
- XmlBufferedByteStreamReader.cs
- RawTextInputReport.cs
- XmlAttributes.cs
- XmlSchemaSequence.cs
- XmlReflectionMember.cs
- Sorting.cs
- RoutedEventConverter.cs
- PointConverter.cs
- MetadataCollection.cs
- XamlReader.cs
- HighContrastHelper.cs
- CodeExpressionStatement.cs
- RetriableClipboard.cs
- Vector.cs
- HijriCalendar.cs
- Point3DCollection.cs
- FontStretchConverter.cs
- AssemblyName.cs
- HGlobalSafeHandle.cs
- SendKeys.cs
- Int16.cs
- GraphicsState.cs