Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / IisTraceListener.cs / 2 / IisTraceListener.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Text; using System.Web; using System.Web.Hosting; using System.Web.UI; using System.Diagnostics; using System.Globalization; using System.Security.Permissions; namespace System.Web { [HostProtection(Synchronization=true)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class IisTraceListener : TraceListener { public IisTraceListener() { // only supported on IIS version 7 and later HttpContext context = HttpContext.Current; if (context != null) { if (!HttpRuntime.UseIntegratedPipeline && !(context.WorkerRequest is ISAPIWorkerRequestInProcForIIS7)) { throw new PlatformNotSupportedException(SR.GetString(SR.Requires_Iis_7)); } } } // the listener apis public override void Write(string message) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void Write(string message, string category) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void WriteLine(string message) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void WriteLine(string message, string category) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, object data) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, null, null, data, null)) return; HttpContext context = HttpContext.Current; if (context != null) { string datastring = String.Empty; if (data != null) { datastring = data.ToString(); } context.WorkerRequest.RaiseTraceEvent(Convert(eventType), AppendTraceOptions(eventCache, datastring)); } } public override void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, params object[] data) { HttpContext context = HttpContext.Current; if (context == null) return; if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, null, null, null, data)) return; StringBuilder sb = new StringBuilder(); if (data != null) { for (int i=0; i< data.Length; i++) { if (i != 0) sb.Append(", "); if (data[i] != null) sb.Append(data[i].ToString()); } } if (context != null) { context.WorkerRequest.RaiseTraceEvent(Convert(eventType), AppendTraceOptions(eventCache, sb.ToString())); } } public override void TraceEvent(TraceEventCache eventCache, String source, TraceEventType severity, int id, string message) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, severity, id, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context == null) return; context.WorkerRequest.RaiseTraceEvent(Convert(severity), AppendTraceOptions(eventCache, message)); } public override void TraceEvent(TraceEventCache eventCache, String source, TraceEventType severity, int id, string format, params object[] args) { TraceEvent(eventCache, source, severity, id, String.Format(CultureInfo.InvariantCulture, format, args)); } // append trace options to message and return the result private String AppendTraceOptions(TraceEventCache eventCache, String message) { if (eventCache == null || TraceOutputOptions == TraceOptions.None) { return message; } StringBuilder sb = new StringBuilder(message, 1024); if (IsEnabled(TraceOptions.ProcessId)) { sb.Append("\r\nProcessId="); sb.Append(eventCache.ProcessId); } if (IsEnabled(TraceOptions.LogicalOperationStack)) { sb.Append("\r\nLogicalOperationStack="); bool first = true; foreach (Object obj in eventCache.LogicalOperationStack) { if (!first) { sb.Append(", "); } else { first = false; } sb.Append(obj); } } if (IsEnabled(TraceOptions.ThreadId)) { sb.Append("\r\nThreadId="); sb.Append(eventCache.ThreadId); } if (IsEnabled(TraceOptions.DateTime)) { sb.Append("\r\nDateTime="); sb.Append(eventCache.DateTime.ToString("o", CultureInfo.InvariantCulture)); } if (IsEnabled(TraceOptions.Timestamp)) { sb.Append("\r\nTimestamp="); sb.Append(eventCache.Timestamp); } if (IsEnabled(TraceOptions.Callstack)) { sb.Append("\r\nCallstack="); sb.Append(eventCache.Callstack); } return sb.ToString(); } private bool IsEnabled(TraceOptions opts) { return (opts & TraceOutputOptions) != 0; } private IntegratedTraceType Convert(TraceEventType tet) { switch (tet) { case TraceEventType.Critical: return IntegratedTraceType.DiagCritical; case TraceEventType.Error: return IntegratedTraceType.DiagError; case TraceEventType.Warning: return IntegratedTraceType.DiagWarning; case TraceEventType.Information: return IntegratedTraceType.DiagInfo; case TraceEventType.Verbose: return IntegratedTraceType.DiagVerbose; case TraceEventType.Start: return IntegratedTraceType.DiagStart; case TraceEventType.Stop: return IntegratedTraceType.DiagStop; case TraceEventType.Suspend: return IntegratedTraceType.DiagSuspend; case TraceEventType.Resume: return IntegratedTraceType.DiagResume; case TraceEventType.Transfer: return IntegratedTraceType.DiagTransfer; } // Default to verbose logging return IntegratedTraceType.DiagVerbose; } } } // 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. // //----------------------------------------------------------------------------- using System; using System.Text; using System.Web; using System.Web.Hosting; using System.Web.UI; using System.Diagnostics; using System.Globalization; using System.Security.Permissions; namespace System.Web { [HostProtection(Synchronization=true)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class IisTraceListener : TraceListener { public IisTraceListener() { // only supported on IIS version 7 and later HttpContext context = HttpContext.Current; if (context != null) { if (!HttpRuntime.UseIntegratedPipeline && !(context.WorkerRequest is ISAPIWorkerRequestInProcForIIS7)) { throw new PlatformNotSupportedException(SR.GetString(SR.Requires_Iis_7)); } } } // the listener apis public override void Write(string message) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void Write(string message, string category) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void WriteLine(string message) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void WriteLine(string message, string category) { if (Filter != null && !Filter.ShouldTrace(null, String.Empty, TraceEventType.Verbose, 0, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context != null) { context.WorkerRequest.RaiseTraceEvent(IntegratedTraceType.TraceWrite, message); } } public override void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, object data) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, null, null, data, null)) return; HttpContext context = HttpContext.Current; if (context != null) { string datastring = String.Empty; if (data != null) { datastring = data.ToString(); } context.WorkerRequest.RaiseTraceEvent(Convert(eventType), AppendTraceOptions(eventCache, datastring)); } } public override void TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, int id, params object[] data) { HttpContext context = HttpContext.Current; if (context == null) return; if (Filter != null && !Filter.ShouldTrace(eventCache, source, eventType, id, null, null, null, data)) return; StringBuilder sb = new StringBuilder(); if (data != null) { for (int i=0; i< data.Length; i++) { if (i != 0) sb.Append(", "); if (data[i] != null) sb.Append(data[i].ToString()); } } if (context != null) { context.WorkerRequest.RaiseTraceEvent(Convert(eventType), AppendTraceOptions(eventCache, sb.ToString())); } } public override void TraceEvent(TraceEventCache eventCache, String source, TraceEventType severity, int id, string message) { if (Filter != null && !Filter.ShouldTrace(eventCache, source, severity, id, message, null, null, null)) return; HttpContext context = HttpContext.Current; if (context == null) return; context.WorkerRequest.RaiseTraceEvent(Convert(severity), AppendTraceOptions(eventCache, message)); } public override void TraceEvent(TraceEventCache eventCache, String source, TraceEventType severity, int id, string format, params object[] args) { TraceEvent(eventCache, source, severity, id, String.Format(CultureInfo.InvariantCulture, format, args)); } // append trace options to message and return the result private String AppendTraceOptions(TraceEventCache eventCache, String message) { if (eventCache == null || TraceOutputOptions == TraceOptions.None) { return message; } StringBuilder sb = new StringBuilder(message, 1024); if (IsEnabled(TraceOptions.ProcessId)) { sb.Append("\r\nProcessId="); sb.Append(eventCache.ProcessId); } if (IsEnabled(TraceOptions.LogicalOperationStack)) { sb.Append("\r\nLogicalOperationStack="); bool first = true; foreach (Object obj in eventCache.LogicalOperationStack) { if (!first) { sb.Append(", "); } else { first = false; } sb.Append(obj); } } if (IsEnabled(TraceOptions.ThreadId)) { sb.Append("\r\nThreadId="); sb.Append(eventCache.ThreadId); } if (IsEnabled(TraceOptions.DateTime)) { sb.Append("\r\nDateTime="); sb.Append(eventCache.DateTime.ToString("o", CultureInfo.InvariantCulture)); } if (IsEnabled(TraceOptions.Timestamp)) { sb.Append("\r\nTimestamp="); sb.Append(eventCache.Timestamp); } if (IsEnabled(TraceOptions.Callstack)) { sb.Append("\r\nCallstack="); sb.Append(eventCache.Callstack); } return sb.ToString(); } private bool IsEnabled(TraceOptions opts) { return (opts & TraceOutputOptions) != 0; } private IntegratedTraceType Convert(TraceEventType tet) { switch (tet) { case TraceEventType.Critical: return IntegratedTraceType.DiagCritical; case TraceEventType.Error: return IntegratedTraceType.DiagError; case TraceEventType.Warning: return IntegratedTraceType.DiagWarning; case TraceEventType.Information: return IntegratedTraceType.DiagInfo; case TraceEventType.Verbose: return IntegratedTraceType.DiagVerbose; case TraceEventType.Start: return IntegratedTraceType.DiagStart; case TraceEventType.Stop: return IntegratedTraceType.DiagStop; case TraceEventType.Suspend: return IntegratedTraceType.DiagSuspend; case TraceEventType.Resume: return IntegratedTraceType.DiagResume; case TraceEventType.Transfer: return IntegratedTraceType.DiagTransfer; } // Default to verbose logging return IntegratedTraceType.DiagVerbose; } } } // 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
- ImportContext.cs
- SerialReceived.cs
- RichTextBoxConstants.cs
- RubberbandSelector.cs
- XmlDownloadManager.cs
- cryptoapiTransform.cs
- Transform.cs
- Unit.cs
- XamlSerializer.cs
- ObsoleteAttribute.cs
- HebrewNumber.cs
- DataContractSerializer.cs
- Single.cs
- GetPageCompletedEventArgs.cs
- DrawingCollection.cs
- HyperlinkAutomationPeer.cs
- SoapSchemaImporter.cs
- WebControlParameterProxy.cs
- SqlFactory.cs
- Deflater.cs
- NonSerializedAttribute.cs
- HttpException.cs
- Iis7Helper.cs
- LinqDataSourceEditData.cs
- MobileControlPersister.cs
- MouseBinding.cs
- WindowsFormsEditorServiceHelper.cs
- ChangePassword.cs
- LineVisual.cs
- SqlDependencyListener.cs
- AuthenticationException.cs
- UITypeEditor.cs
- GrammarBuilder.cs
- InputLangChangeEvent.cs
- HtmlPanelAdapter.cs
- PersonalizationAdministration.cs
- XPathAncestorQuery.cs
- ApplicationTrust.cs
- PointLightBase.cs
- SystemInformation.cs
- ManualResetEventSlim.cs
- OpacityConverter.cs
- DataColumnMappingCollection.cs
- IntSecurity.cs
- XsltSettings.cs
- ProxyElement.cs
- Sequence.cs
- TemplateControlCodeDomTreeGenerator.cs
- ErasingStroke.cs
- AmbientLight.cs
- WebRequestModulesSection.cs
- TogglePatternIdentifiers.cs
- TableDetailsRow.cs
- StorageMappingItemCollection.cs
- IApplicationTrustManager.cs
- ISAPIRuntime.cs
- PageCatalogPartDesigner.cs
- ExecutionScope.cs
- PublisherIdentityPermission.cs
- DefaultValidator.cs
- ScaleTransform.cs
- GlobalItem.cs
- IxmlLineInfo.cs
- DeviceSpecific.cs
- DescendantBaseQuery.cs
- WindowsAltTab.cs
- DocumentApplicationJournalEntry.cs
- _DisconnectOverlappedAsyncResult.cs
- CryptoStream.cs
- DirtyTextRange.cs
- FixedBufferAttribute.cs
- TypeBrowser.xaml.cs
- FunctionNode.cs
- SQLGuid.cs
- isolationinterop.cs
- TextRange.cs
- precedingquery.cs
- CriticalHandle.cs
- HtmlEmptyTagControlBuilder.cs
- MachineKeySection.cs
- ThreadPool.cs
- Schedule.cs
- infer.cs
- SectionInformation.cs
- LinkLabel.cs
- SystemColors.cs
- HttpCapabilitiesEvaluator.cs
- ButtonColumn.cs
- DesignTimeVisibleAttribute.cs
- EntitySetBaseCollection.cs
- oledbmetadatacolumnnames.cs
- StrokeFIndices.cs
- JsonReaderWriterFactory.cs
- DbProviderSpecificTypePropertyAttribute.cs
- Size.cs
- DataGridViewRow.cs
- listitem.cs
- ListViewInsertionMark.cs
- SimpleTypeResolver.cs
- TextReader.cs