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
- MonitoringDescriptionAttribute.cs
- ClientBuildManagerCallback.cs
- TableSectionStyle.cs
- LambdaCompiler.Address.cs
- Logging.cs
- EventItfInfo.cs
- metadatamappinghashervisitor.cs
- InstanceDescriptor.cs
- TableColumn.cs
- TdsParserStateObject.cs
- FormsAuthenticationModule.cs
- VisualStateChangedEventArgs.cs
- DocumentDesigner.cs
- hebrewshape.cs
- HeaderPanel.cs
- StdValidatorsAndConverters.cs
- HorizontalAlignConverter.cs
- DiagnosticStrings.cs
- MemberBinding.cs
- TypedRowGenerator.cs
- HwndTarget.cs
- AsynchronousChannelMergeEnumerator.cs
- StringAnimationBase.cs
- EnumerableRowCollectionExtensions.cs
- RenamedEventArgs.cs
- Command.cs
- EntryWrittenEventArgs.cs
- BitmapCodecInfoInternal.cs
- RadioButton.cs
- WrapPanel.cs
- OdbcTransaction.cs
- _BaseOverlappedAsyncResult.cs
- ClientRuntimeConfig.cs
- Error.cs
- HeaderUtility.cs
- JapaneseLunisolarCalendar.cs
- WebPartConnectVerb.cs
- SspiWrapper.cs
- ConstructorExpr.cs
- CharConverter.cs
- __FastResourceComparer.cs
- CompositeActivityTypeDescriptorProvider.cs
- figurelength.cs
- HMAC.cs
- PageThemeBuildProvider.cs
- BufferAllocator.cs
- ThrowHelper.cs
- CodeNamespaceImportCollection.cs
- SQLInt64.cs
- SqlClientWrapperSmiStream.cs
- ContractAdapter.cs
- Animatable.cs
- FrameworkElement.cs
- GridPatternIdentifiers.cs
- ScrollableControl.cs
- ClientConfigurationSystem.cs
- SchemaComplexType.cs
- cookieexception.cs
- DataColumnSelectionConverter.cs
- TextEditor.cs
- DrawToolTipEventArgs.cs
- ParserContext.cs
- HtmlElementErrorEventArgs.cs
- DigestTraceRecordHelper.cs
- CanonicalFormWriter.cs
- HttpPostedFile.cs
- ByteStreamMessageEncodingElement.cs
- MemberNameValidator.cs
- XmlSchemaInferenceException.cs
- SettingsProperty.cs
- Drawing.cs
- TagMapInfo.cs
- ManipulationDelta.cs
- IdentityValidationException.cs
- DragEvent.cs
- Header.cs
- OleDbConnection.cs
- HttpListenerResponse.cs
- InputElement.cs
- GridViewItemAutomationPeer.cs
- UnsignedPublishLicense.cs
- DefaultAuthorizationContext.cs
- Container.cs
- Run.cs
- DecimalConstantAttribute.cs
- SystemUnicastIPAddressInformation.cs
- TimeSpanOrInfiniteConverter.cs
- OletxCommittableTransaction.cs
- Predicate.cs
- HttpServerVarsCollection.cs
- UnmanagedMemoryStream.cs
- StateMachineHelpers.cs
- KeyValueInternalCollection.cs
- UnsafeNativeMethods.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- WebPartDisplayModeCollection.cs
- DrawListViewItemEventArgs.cs
- FixedPosition.cs
- SafeArrayRankMismatchException.cs
- RoleGroupCollection.cs