Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Utility / TraceLog.cs / 1305600 / TraceLog.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Log of recent actions. Use this to debug those nasty problems // that don't repro on demand and don't have enough information in a crash // dump. // // In the class(es) of interest, add a TraceLog object. At points of // interest, call TraceLog.Add to record a string in the log. After the // crash, call TraceLog.WriteLog (or simply examine the log directly in // the debugger). Log entries are timestamped. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Globalization; namespace MS.Internal.Utility { internal class TraceLog { // create an unbounded trace log internal TraceLog() : this(Int32.MaxValue) {} // create a trace log that remembers the last 'size' actions internal TraceLog(int size) { _size = size; _log = new ArrayList(); } // add an entry to the log. Args are just like String.Format internal void Add(string message, params object[] args) { // create timestamped message string string s = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture) + " " + String.Format(CultureInfo.InvariantCulture, message, args); // if log is full, discard the oldest message if (_log.Count == _size) _log.RemoveAt(0); // add the new message _log.Add(s); } // write the log to the console internal void WriteLog() { for (int k=0; k<_log.Count; ++k) Console.WriteLine(_log[k]); } // return a printable id for the object internal static string IdFor(object o) { if (o == null) return "NULL"; else return String.Format(CultureInfo.InvariantCulture, "{0}.{1}", o.GetType().Name, o.GetHashCode()); } ArrayList _log; int _size; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Log of recent actions. Use this to debug those nasty problems // that don't repro on demand and don't have enough information in a crash // dump. // // In the class(es) of interest, add a TraceLog object. At points of // interest, call TraceLog.Add to record a string in the log. After the // crash, call TraceLog.WriteLog (or simply examine the log directly in // the debugger). Log entries are timestamped. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Globalization; namespace MS.Internal.Utility { internal class TraceLog { // create an unbounded trace log internal TraceLog() : this(Int32.MaxValue) {} // create a trace log that remembers the last 'size' actions internal TraceLog(int size) { _size = size; _log = new ArrayList(); } // add an entry to the log. Args are just like String.Format internal void Add(string message, params object[] args) { // create timestamped message string string s = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture) + " " + String.Format(CultureInfo.InvariantCulture, message, args); // if log is full, discard the oldest message if (_log.Count == _size) _log.RemoveAt(0); // add the new message _log.Add(s); } // write the log to the console internal void WriteLog() { for (int k=0; k<_log.Count; ++k) Console.WriteLine(_log[k]); } // return a printable id for the object internal static string IdFor(object o) { if (o == null) return "NULL"; else return String.Format(CultureInfo.InvariantCulture, "{0}.{1}", o.GetType().Name, o.GetHashCode()); } ArrayList _log; int _size; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SrgsGrammarCompiler.cs
- PointIndependentAnimationStorage.cs
- ThicknessAnimationBase.cs
- UrlSyndicationContent.cs
- FormViewDeleteEventArgs.cs
- XdrBuilder.cs
- GridViewRowEventArgs.cs
- CatalogPartCollection.cs
- TableFieldsEditor.cs
- KerberosRequestorSecurityToken.cs
- DataGridViewCellCollection.cs
- RectAnimation.cs
- SemanticResolver.cs
- EventLogException.cs
- RegexReplacement.cs
- FileSystemInfo.cs
- TextTreeTextNode.cs
- DesignOnlyAttribute.cs
- SQLCharsStorage.cs
- InvokeHandlers.cs
- RoleManagerModule.cs
- BulletChrome.cs
- ClaimTypeElement.cs
- FlowPanelDesigner.cs
- SerialPort.cs
- DiscreteKeyFrames.cs
- EventSourceCreationData.cs
- BrowserCapabilitiesCodeGenerator.cs
- ValidationErrorEventArgs.cs
- PartBasedPackageProperties.cs
- FixedNode.cs
- WeakReferenceEnumerator.cs
- ConvertBinder.cs
- HtmlButton.cs
- XmlWriter.cs
- WindowsUpDown.cs
- LogConverter.cs
- PagePropertiesChangingEventArgs.cs
- XmlTextAttribute.cs
- FontInfo.cs
- wgx_exports.cs
- ToolStripGripRenderEventArgs.cs
- CustomErrorsSectionWrapper.cs
- RenderData.cs
- MailAddressCollection.cs
- EventRoute.cs
- PreProcessor.cs
- RegexCaptureCollection.cs
- FontFamily.cs
- StrongNameMembershipCondition.cs
- ScriptingWebServicesSectionGroup.cs
- NamedPipeConnectionPoolSettingsElement.cs
- RightsManagementEncryptedStream.cs
- Constants.cs
- HttpCookie.cs
- Polygon.cs
- DetailsViewUpdateEventArgs.cs
- TimeSpan.cs
- ChangesetResponse.cs
- EventLogPermissionAttribute.cs
- LayoutEvent.cs
- OutputCacheSettingsSection.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TypeUnloadedException.cs
- CdpEqualityComparer.cs
- TextSchema.cs
- ListViewContainer.cs
- ItemContainerProviderWrapper.cs
- PeerApplicationLaunchInfo.cs
- LocationUpdates.cs
- PropertyMetadata.cs
- SuppressMergeCheckAttribute.cs
- ThreadStaticAttribute.cs
- SecuritySessionClientSettings.cs
- DebugInfoGenerator.cs
- SynchronousReceiveBehavior.cs
- HttpClientCertificate.cs
- GeometryValueSerializer.cs
- TableColumnCollectionInternal.cs
- CodeDelegateInvokeExpression.cs
- ProxyWebPart.cs
- Validator.cs
- DataGridViewTopRowAccessibleObject.cs
- _SslSessionsCache.cs
- SafeFileMappingHandle.cs
- BoundsDrawingContextWalker.cs
- HtmlWindowCollection.cs
- HtmlInputCheckBox.cs
- ControlDesigner.cs
- SqlProviderServices.cs
- DataStreamFromComStream.cs
- ZipIOLocalFileBlock.cs
- CollectionViewProxy.cs
- DataPager.cs
- XmlSchemaGroupRef.cs
- DataGridColumnReorderingEventArgs.cs
- Span.cs
- BaseDataBoundControl.cs
- ServiceManagerHandle.cs
- AudioFormatConverter.cs