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
- TextRangeEditLists.cs
- OutputScopeManager.cs
- PerformanceCounterManager.cs
- MetadataPropertyAttribute.cs
- SortedSet.cs
- ResourceSetExpression.cs
- CompositeActivityCodeGenerator.cs
- TypeGeneratedEventArgs.cs
- RefreshEventArgs.cs
- XmlDataSource.cs
- FacetValues.cs
- SqlNode.cs
- ToolboxItemImageConverter.cs
- ProviderConnectionPointCollection.cs
- WhileDesigner.cs
- TextServicesDisplayAttributePropertyRanges.cs
- SchemaMerger.cs
- WindowsUpDown.cs
- DateTimeUtil.cs
- SelectionUIService.cs
- KeyPressEvent.cs
- SchemaSetCompiler.cs
- BufferedWebEventProvider.cs
- AnnotationComponentManager.cs
- CacheMemory.cs
- OpenFileDialog.cs
- SystemEvents.cs
- DependencyObjectType.cs
- TableLayoutPanel.cs
- ActiveXMessageFormatter.cs
- SqlBulkCopyColumnMappingCollection.cs
- PropertyRecord.cs
- IpcPort.cs
- TextTreeFixupNode.cs
- StaticFileHandler.cs
- ItemsPanelTemplate.cs
- AspCompat.cs
- ExpressionNormalizer.cs
- StringTraceRecord.cs
- Timer.cs
- GeneralTransform.cs
- FormViewCommandEventArgs.cs
- WindowsFormsHost.cs
- XmlAnyAttributeAttribute.cs
- WebPartHeaderCloseVerb.cs
- DataGridViewButtonColumn.cs
- TraceSection.cs
- RepeaterItemEventArgs.cs
- HashAlgorithm.cs
- ContractReference.cs
- EdmFunction.cs
- Int32AnimationUsingKeyFrames.cs
- DateTimeSerializationSection.cs
- xml.cs
- SemaphoreFullException.cs
- ImageClickEventArgs.cs
- MimeMapping.cs
- EntityDataSourceStatementEditor.cs
- GraphicsPath.cs
- BulletedListEventArgs.cs
- WebControlsSection.cs
- DataControlField.cs
- WorkflowInstanceContextProvider.cs
- VisualBrush.cs
- FileEnumerator.cs
- SplitterEvent.cs
- DataSourceSelectArguments.cs
- SafeRegistryHandle.cs
- Span.cs
- ClonableStack.cs
- LineGeometry.cs
- SpStreamWrapper.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- LoginCancelEventArgs.cs
- XmlSchemaSimpleTypeList.cs
- CapabilitiesSection.cs
- WebBrowserContainer.cs
- PackageProperties.cs
- Accessible.cs
- SlotInfo.cs
- DefaultHttpHandler.cs
- TcpServerChannel.cs
- Options.cs
- HostedHttpRequestAsyncResult.cs
- TextEndOfLine.cs
- contentDescriptor.cs
- XamlClipboardData.cs
- FrameworkReadOnlyPropertyMetadata.cs
- CodeTypeReferenceCollection.cs
- SQLBinary.cs
- ListBoxChrome.cs
- datacache.cs
- DocumentAutomationPeer.cs
- OracleConnectionFactory.cs
- CompModSwitches.cs
- EntityTemplateFactory.cs
- dataprotectionpermissionattribute.cs
- X509InitiatorCertificateClientElement.cs
- TextReader.cs
- CrossSiteScriptingValidation.cs