Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / SMDiagnostics / System / ServiceModel / Diagnostics / PiiTraceSource.cs / 1305376 / PiiTraceSource.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Diagnostics { using System.Configuration; // using System.ServiceModel.Channels; using System.Diagnostics; using System.ServiceModel.Configuration; class PiiTraceSource : TraceSource { string eventSourceName = String.Empty; internal const string LogPii = "logKnownPii"; bool shouldLogPii = false; bool initialized = false; object localSyncObject = new object(); internal PiiTraceSource(string name, string eventSourceName) : base(name) { #pragma warning disable 618 AssertUtility.DebugAssert(!String.IsNullOrEmpty(eventSourceName), "Event log source name must be valid"); #pragma warning restore 618 this.eventSourceName = eventSourceName; } internal PiiTraceSource(string name, string eventSourceName, SourceLevels levels) : base(name, levels) { #pragma warning disable 618 AssertUtility.DebugAssert(!String.IsNullOrEmpty(eventSourceName), "Event log source name must be valid"); #pragma warning restore 618 this.eventSourceName = eventSourceName; } void Initialize() { if (!this.initialized) { lock (localSyncObject) { if (!this.initialized) { string attributeValue = this.Attributes[PiiTraceSource.LogPii]; bool shouldLogPii = false; if (!string.IsNullOrEmpty(attributeValue)) { if (!bool.TryParse(attributeValue, out shouldLogPii)) { shouldLogPii = false; } } if (shouldLogPii) { #pragma warning disable 618 EventLogger logger = new EventLogger(this.eventSourceName, null); #pragma warning restore 618 if (MachineSettingsSection.EnableLoggingKnownPii) { logger.LogEvent(TraceEventType.Information, EventLogCategory.MessageLogging, EventLogEventId.PiiLoggingOn, false); this.shouldLogPii = true; } else { logger.LogEvent(TraceEventType.Error, EventLogCategory.MessageLogging, EventLogEventId.PiiLoggingNotAllowed, false); } } this.initialized = true; } } } } protected override string[] GetSupportedAttributes() { return new string[] { PiiTraceSource.LogPii }; } internal bool ShouldLogPii { get { // ShouldLogPii is called very frequently, don't call Initialize unless we have to. if (!this.initialized) { Initialize(); } return this.shouldLogPii; } set { // If you call this, you know what you're doing this.initialized = true; this.shouldLogPii = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Diagnostics { using System.Configuration; // using System.ServiceModel.Channels; using System.Diagnostics; using System.ServiceModel.Configuration; class PiiTraceSource : TraceSource { string eventSourceName = String.Empty; internal const string LogPii = "logKnownPii"; bool shouldLogPii = false; bool initialized = false; object localSyncObject = new object(); internal PiiTraceSource(string name, string eventSourceName) : base(name) { #pragma warning disable 618 AssertUtility.DebugAssert(!String.IsNullOrEmpty(eventSourceName), "Event log source name must be valid"); #pragma warning restore 618 this.eventSourceName = eventSourceName; } internal PiiTraceSource(string name, string eventSourceName, SourceLevels levels) : base(name, levels) { #pragma warning disable 618 AssertUtility.DebugAssert(!String.IsNullOrEmpty(eventSourceName), "Event log source name must be valid"); #pragma warning restore 618 this.eventSourceName = eventSourceName; } void Initialize() { if (!this.initialized) { lock (localSyncObject) { if (!this.initialized) { string attributeValue = this.Attributes[PiiTraceSource.LogPii]; bool shouldLogPii = false; if (!string.IsNullOrEmpty(attributeValue)) { if (!bool.TryParse(attributeValue, out shouldLogPii)) { shouldLogPii = false; } } if (shouldLogPii) { #pragma warning disable 618 EventLogger logger = new EventLogger(this.eventSourceName, null); #pragma warning restore 618 if (MachineSettingsSection.EnableLoggingKnownPii) { logger.LogEvent(TraceEventType.Information, EventLogCategory.MessageLogging, EventLogEventId.PiiLoggingOn, false); this.shouldLogPii = true; } else { logger.LogEvent(TraceEventType.Error, EventLogCategory.MessageLogging, EventLogEventId.PiiLoggingNotAllowed, false); } } this.initialized = true; } } } } protected override string[] GetSupportedAttributes() { return new string[] { PiiTraceSource.LogPii }; } internal bool ShouldLogPii { get { // ShouldLogPii is called very frequently, don't call Initialize unless we have to. if (!this.initialized) { Initialize(); } return this.shouldLogPii; } set { // If you call this, you know what you're doing this.initialized = true; this.shouldLogPii = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DocumentCollection.cs
- ListView.cs
- InputLangChangeRequestEvent.cs
- WindowsTreeView.cs
- OuterGlowBitmapEffect.cs
- FixedTextBuilder.cs
- DataTableMappingCollection.cs
- Walker.cs
- MatrixTransform.cs
- InlineCategoriesDocument.cs
- Scalars.cs
- Point3DIndependentAnimationStorage.cs
- DrawingImage.cs
- TypeTypeConverter.cs
- UInt32Storage.cs
- SynchronizingStream.cs
- SHA1CryptoServiceProvider.cs
- DataGridSortCommandEventArgs.cs
- WebPartActionVerb.cs
- SyndicationDeserializer.cs
- TextFormatter.cs
- Registry.cs
- Util.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- SessionParameter.cs
- PropertyItem.cs
- MetaType.cs
- UserControlParser.cs
- ITextView.cs
- XsltFunctions.cs
- DbFunctionCommandTree.cs
- NameValueFileSectionHandler.cs
- Visual3D.cs
- RSAPKCS1SignatureDeformatter.cs
- CounterSample.cs
- ComponentChangedEvent.cs
- MediaContextNotificationWindow.cs
- CacheMemory.cs
- Literal.cs
- RawStylusActions.cs
- DescendantBaseQuery.cs
- LinearGradientBrush.cs
- DataTableCollection.cs
- GridViewRowEventArgs.cs
- HttpCookiesSection.cs
- Transaction.cs
- ServiceHttpModule.cs
- AmbientLight.cs
- DictionaryTraceRecord.cs
- Interlocked.cs
- ToolboxDataAttribute.cs
- Animatable.cs
- UpdateExpressionVisitor.cs
- SecurityMode.cs
- MergePropertyDescriptor.cs
- NoPersistScope.cs
- SerializationAttributes.cs
- Accessible.cs
- SqlConnectionHelper.cs
- WinEventHandler.cs
- SmtpReplyReaderFactory.cs
- RequestCachingSection.cs
- ViewBox.cs
- LocalValueEnumerator.cs
- PageSetupDialog.cs
- PropertySourceInfo.cs
- ProxyAttribute.cs
- TextModifierScope.cs
- Util.cs
- AsymmetricCryptoHandle.cs
- RightsManagementPermission.cs
- ipaddressinformationcollection.cs
- DoWorkEventArgs.cs
- SqlRetyper.cs
- PolyLineSegmentFigureLogic.cs
- X500Name.cs
- DocumentXPathNavigator.cs
- SqlNotificationRequest.cs
- DrawingImage.cs
- CFStream.cs
- SendActivityDesigner.cs
- MessageDesigner.cs
- datacache.cs
- ToolStripItemEventArgs.cs
- XmlQueryContext.cs
- VisualBasicSettingsHandler.cs
- TextWriterEngine.cs
- HierarchicalDataBoundControlAdapter.cs
- RegisteredArrayDeclaration.cs
- MappingItemCollection.cs
- InputLanguageProfileNotifySink.cs
- AssociatedControlConverter.cs
- BindingEntityInfo.cs
- ToolboxItemFilterAttribute.cs
- ObjectQuery_EntitySqlExtensions.cs
- ServiceObjectContainer.cs
- QueryExpr.cs
- ChannelSinkStacks.cs
- DataBoundControlHelper.cs
- ConstraintConverter.cs