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
- ConfigurationManagerHelper.cs
- _UriSyntax.cs
- TextMessageEncodingBindingElement.cs
- ConfigXmlWhitespace.cs
- ExpressionDumper.cs
- QueryTaskGroupState.cs
- GridViewColumnHeader.cs
- ComponentCommands.cs
- DataServiceBehavior.cs
- TextViewElement.cs
- CodeTryCatchFinallyStatement.cs
- DomNameTable.cs
- CopyAction.cs
- ButtonFieldBase.cs
- _NTAuthentication.cs
- MouseBinding.cs
- HyperLinkColumn.cs
- TransformGroup.cs
- FileLoadException.cs
- CustomCategoryAttribute.cs
- VisualBrush.cs
- MetadataPropertyAttribute.cs
- GetPageNumberCompletedEventArgs.cs
- InvalidOleVariantTypeException.cs
- WebContext.cs
- SimpleTextLine.cs
- ReceiveSecurityHeader.cs
- X509Certificate.cs
- DataGridViewCellConverter.cs
- StringValidatorAttribute.cs
- RoleGroupCollection.cs
- SessionStateUtil.cs
- HwndSourceKeyboardInputSite.cs
- XPathMessageFilterElementComparer.cs
- PropertyDescriptorCollection.cs
- Size3DValueSerializer.cs
- ConfigPathUtility.cs
- XmlWrappingWriter.cs
- OpenFileDialog.cs
- ISessionStateStore.cs
- DesignerWithHeader.cs
- ConditionalAttribute.cs
- OciHandle.cs
- dbdatarecord.cs
- LookupBindingPropertiesAttribute.cs
- StorageMappingFragment.cs
- WindowsStatusBar.cs
- HostProtectionPermission.cs
- DataFieldEditor.cs
- Mapping.cs
- AncestorChangedEventArgs.cs
- StorageEntitySetMapping.cs
- _LocalDataStore.cs
- DrawingGroup.cs
- BooleanAnimationUsingKeyFrames.cs
- AttachInfo.cs
- SystemIPAddressInformation.cs
- PersonalizationAdministration.cs
- UpdateExpressionVisitor.cs
- DoubleStorage.cs
- DBNull.cs
- XPathAxisIterator.cs
- XdrBuilder.cs
- ADConnectionHelper.cs
- _BufferOffsetSize.cs
- OutputCacheSection.cs
- GenericAuthenticationEventArgs.cs
- ContentType.cs
- XamlReader.cs
- MatrixTransform3D.cs
- RSACryptoServiceProvider.cs
- DependencyPropertyDescriptor.cs
- TypeDependencyAttribute.cs
- VisualTarget.cs
- SqlCacheDependencyDatabase.cs
- DataControlFieldCollection.cs
- ForwardPositionQuery.cs
- SqlXml.cs
- XmlAggregates.cs
- SerializationEventsCache.cs
- SmiMetaDataProperty.cs
- TaskFormBase.cs
- SoapSchemaExporter.cs
- ItemsPanelTemplate.cs
- PerformanceCounterPermissionAttribute.cs
- OleCmdHelper.cs
- Double.cs
- DictionarySectionHandler.cs
- RowCache.cs
- CodeNamespaceCollection.cs
- _NestedSingleAsyncResult.cs
- login.cs
- RepeatBehavior.cs
- DBSchemaTable.cs
- ComplexObject.cs
- COM2ExtendedUITypeEditor.cs
- InputEventArgs.cs
- ClientTarget.cs
- ContentPosition.cs
- SqlRewriteScalarSubqueries.cs