Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Internal / Utility / TraceLog.cs / 1 / 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
- TdsParserStateObject.cs
- documentsequencetextview.cs
- AccessText.cs
- Quaternion.cs
- CompilerTypeWithParams.cs
- CheckableControlBaseAdapter.cs
- GridErrorDlg.cs
- ApplyImportsAction.cs
- CalendarDesigner.cs
- RegistryPermission.cs
- CustomLineCap.cs
- DataContext.cs
- Enum.cs
- NameService.cs
- SafeNativeMethods.cs
- SymbolUsageManager.cs
- SchemaNames.cs
- TemplateContainer.cs
- sqlnorm.cs
- TextAutomationPeer.cs
- XmlNodeList.cs
- XsdDuration.cs
- TabItem.cs
- SimpleHandlerFactory.cs
- List.cs
- _ShellExpression.cs
- XmlSchemaSimpleContentRestriction.cs
- ClientFormsIdentity.cs
- SqlDataSource.cs
- IncrementalHitTester.cs
- Task.cs
- GridViewDeletedEventArgs.cs
- RIPEMD160Managed.cs
- ContractUtils.cs
- EndpointDiscoveryMetadata11.cs
- DynamicResourceExtensionConverter.cs
- SerialPort.cs
- SecureUICommand.cs
- BitmapEffectInput.cs
- ClientConvert.cs
- Activity.cs
- DescendantQuery.cs
- Models.cs
- CodeAttributeArgument.cs
- RefType.cs
- TranslateTransform3D.cs
- QueryGeneratorBase.cs
- ColorContext.cs
- FormattedText.cs
- SvcFileManager.cs
- SecurityIdentifierElement.cs
- PropertyGroupDescription.cs
- DataObjectAttribute.cs
- Panel.cs
- OverflowException.cs
- EntityParameter.cs
- FormViewDeletedEventArgs.cs
- ApplicationId.cs
- ConfigurationPropertyAttribute.cs
- Zone.cs
- SecurityUtils.cs
- FrameworkContextData.cs
- WebServiceTypeData.cs
- ManagementObject.cs
- MarkupCompilePass1.cs
- XmlQueryStaticData.cs
- listitem.cs
- validation.cs
- TextServicesLoader.cs
- AdornerPresentationContext.cs
- TypographyProperties.cs
- ResourcesBuildProvider.cs
- PathTooLongException.cs
- CodeDirectoryCompiler.cs
- ResourceSetExpression.cs
- RadioButtonFlatAdapter.cs
- milrender.cs
- MasterPageParser.cs
- BuildProviderCollection.cs
- BuildManagerHost.cs
- TextEmbeddedObject.cs
- InboundActivityHelper.cs
- PixelFormatConverter.cs
- TreeSet.cs
- HttpResponseInternalWrapper.cs
- TrustLevelCollection.cs
- DocumentOrderQuery.cs
- XmlSchemaInfo.cs
- ObjectDataSourceView.cs
- Hash.cs
- StructuredTypeEmitter.cs
- TextEditorTyping.cs
- Point3D.cs
- AliasGenerator.cs
- ClientConvert.cs
- OrderedEnumerableRowCollection.cs
- DeploymentSection.cs
- CommonObjectSecurity.cs
- ContextMenu.cs
- CapabilitiesRule.cs