Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- XmlJsonReader.cs
- JsonWriterDelegator.cs
- BaseTemplateParser.cs
- Directory.cs
- GridPattern.cs
- InitializingNewItemEventArgs.cs
- LoadGrammarCompletedEventArgs.cs
- InstancePersistenceContext.cs
- SchemaNames.cs
- TextTreeExtractElementUndoUnit.cs
- Screen.cs
- ImageCodecInfo.cs
- ArgIterator.cs
- ProfilePropertySettingsCollection.cs
- SequentialOutput.cs
- PlaceHolder.cs
- RegexTypeEditor.cs
- WebRequestModulesSection.cs
- TextEditorCharacters.cs
- EdgeModeValidation.cs
- TreeChangeInfo.cs
- TemporaryBitmapFile.cs
- PrimitiveCodeDomSerializer.cs
- TempFiles.cs
- InternalBufferOverflowException.cs
- FixedDocumentSequencePaginator.cs
- AutomationPeer.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- EmptyReadOnlyDictionaryInternal.cs
- SHA512Managed.cs
- CallbackHandler.cs
- ObjectKeyFrameCollection.cs
- XmlSchemaAnyAttribute.cs
- TableDesigner.cs
- keycontainerpermission.cs
- XmlEntity.cs
- NonSerializedAttribute.cs
- ErrorsHelper.cs
- TabRenderer.cs
- DataObjectEventArgs.cs
- ComplusEndpointConfigContainer.cs
- AssemblyBuilder.cs
- InboundActivityHelper.cs
- TableAutomationPeer.cs
- PropertySegmentSerializer.cs
- ErrorWebPart.cs
- SupportingTokenSpecification.cs
- FileSystemWatcher.cs
- MultiTouchSystemGestureLogic.cs
- TransactionScope.cs
- ProcessModelSection.cs
- AsymmetricKeyExchangeFormatter.cs
- CodeDomComponentSerializationService.cs
- CompressEmulationStream.cs
- ExpandableObjectConverter.cs
- JapaneseCalendar.cs
- VBCodeProvider.cs
- CalculatedColumn.cs
- ProfileManager.cs
- SqlParameterizer.cs
- LineSegment.cs
- AudioException.cs
- Types.cs
- BrowserTree.cs
- Timeline.cs
- ErrorTableItemStyle.cs
- SlotInfo.cs
- _AutoWebProxyScriptEngine.cs
- PrimarySelectionGlyph.cs
- SqlGenericUtil.cs
- EntityClassGenerator.cs
- EventLogWatcher.cs
- ColumnMapVisitor.cs
- RegexFCD.cs
- TextPenaltyModule.cs
- DataService.cs
- HMACSHA512.cs
- XmlSchemaExternal.cs
- GatewayIPAddressInformationCollection.cs
- SqlCommandBuilder.cs
- EntityDataSourceQueryBuilder.cs
- Descriptor.cs
- HttpFileCollection.cs
- KeyPressEvent.cs
- TypeEnumerableViewSchema.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- PrincipalPermission.cs
- ServicePointManager.cs
- WeakReadOnlyCollection.cs
- MULTI_QI.cs
- MailSettingsSection.cs
- ProxyHelper.cs
- SpellerStatusTable.cs
- XmlSchemaObjectTable.cs
- FileStream.cs
- LightweightEntityWrapper.cs
- SchemaComplexType.cs
- ToolStripComboBox.cs
- BitHelper.cs
- DelayedRegex.cs