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
- ReadOnlyDataSource.cs
- Site.cs
- CheckBoxField.cs
- __ConsoleStream.cs
- ZipIOLocalFileDataDescriptor.cs
- FormView.cs
- XPathBinder.cs
- MetadataArtifactLoader.cs
- DataViewSettingCollection.cs
- KeyFrames.cs
- XmlName.cs
- MimeBasePart.cs
- UnlockInstanceAsyncResult.cs
- KerberosSecurityTokenParameters.cs
- IDispatchConstantAttribute.cs
- ToolStripSplitStackLayout.cs
- Closure.cs
- XmlQueryRuntime.cs
- CodeDirectiveCollection.cs
- LoginUtil.cs
- ConnectionStringsSection.cs
- webclient.cs
- XmlSerializationWriter.cs
- Tokenizer.cs
- LicenseContext.cs
- SecurityCriticalDataForSet.cs
- Config.cs
- _UriTypeConverter.cs
- XmlTextReaderImpl.cs
- DialogDivider.cs
- Int64Storage.cs
- CrossContextChannel.cs
- SchemaObjectWriter.cs
- DataGridViewControlCollection.cs
- SqlInternalConnectionSmi.cs
- SqlServices.cs
- XmlSchemaDatatype.cs
- WindowsRichEditRange.cs
- XmlSchemaSimpleContentRestriction.cs
- BrowserCapabilitiesCodeGenerator.cs
- DelegateSerializationHolder.cs
- NavigationProperty.cs
- TableItemStyle.cs
- ComEventsInfo.cs
- UIElementIsland.cs
- OutputCacheProfileCollection.cs
- WebBrowser.cs
- ConstNode.cs
- View.cs
- IsolatedStorageFilePermission.cs
- XmlSchemaAll.cs
- StateRuntime.cs
- EntityException.cs
- SchemaInfo.cs
- PlanCompilerUtil.cs
- LifetimeServices.cs
- Internal.cs
- DelegatedStream.cs
- EffectiveValueEntry.cs
- CreationContext.cs
- DrawingContextWalker.cs
- TableDetailsCollection.cs
- SplineKeyFrames.cs
- As.cs
- ArrayItemReference.cs
- ServiceNameElementCollection.cs
- BaseInfoTable.cs
- RootContext.cs
- IconConverter.cs
- SvcFileManager.cs
- BitmapInitialize.cs
- String.cs
- OSFeature.cs
- FormViewPagerRow.cs
- SqlRecordBuffer.cs
- ErasingStroke.cs
- QilExpression.cs
- TextChange.cs
- AppModelKnownContentFactory.cs
- CorrelationHandle.cs
- ClientSettings.cs
- XhtmlBasicCommandAdapter.cs
- FormattedText.cs
- TypeReference.cs
- PropertyChangedEventArgs.cs
- CodeEventReferenceExpression.cs
- CustomMenuItemCollection.cs
- ExtensibleSyndicationObject.cs
- RegexGroup.cs
- UdpChannelFactory.cs
- TcpHostedTransportConfiguration.cs
- PageWrapper.cs
- ScrollContentPresenter.cs
- TreeView.cs
- ParsedAttributeCollection.cs
- BlockingCollection.cs
- ComponentResourceKeyConverter.cs
- Pkcs7Signer.cs
- ThreadAbortException.cs
- SliderAutomationPeer.cs