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
- SchemaContext.cs
- TextContainer.cs
- XmlSubtreeReader.cs
- ComNativeDescriptor.cs
- StringInfo.cs
- ToolStripDropDownClosedEventArgs.cs
- ProtocolElementCollection.cs
- SequentialUshortCollection.cs
- DispatcherObject.cs
- RightsManagementEncryptionTransform.cs
- TimeoutValidationAttribute.cs
- CodeGotoStatement.cs
- ReturnType.cs
- storepermission.cs
- StateDesigner.Helpers.cs
- LowerCaseStringConverter.cs
- VariableElement.cs
- AddInAttribute.cs
- HtmlWindow.cs
- TextParagraphProperties.cs
- UniformGrid.cs
- ListBoxItemWrapperAutomationPeer.cs
- KernelTypeValidation.cs
- DataGridTablesFactory.cs
- GridViewCellAutomationPeer.cs
- ScanQueryOperator.cs
- CodeDesigner.cs
- Int32Storage.cs
- ExceptionCollection.cs
- TimelineCollection.cs
- OracleColumn.cs
- PermissionSet.cs
- ContextMarshalException.cs
- PublisherIdentityPermission.cs
- ParameterModifier.cs
- StylusButton.cs
- TransactionScope.cs
- XmlSchemaValidator.cs
- TypeUnloadedException.cs
- SmtpFailedRecipientException.cs
- UpdatePanelControlTrigger.cs
- ListComponentEditor.cs
- Vertex.cs
- MutexSecurity.cs
- TypeNameConverter.cs
- MetadataArtifactLoaderComposite.cs
- CheckoutException.cs
- SiteMapNode.cs
- StateChangeEvent.cs
- SettingsPropertyValueCollection.cs
- DataServiceContext.cs
- SelectionPattern.cs
- ChameleonKey.cs
- ProtocolsSection.cs
- WebAdminConfigurationHelper.cs
- OutputScopeManager.cs
- QuotedStringFormatReader.cs
- XmlSchemaSimpleContent.cs
- OperatingSystem.cs
- _ConnectionGroup.cs
- SpeechAudioFormatInfo.cs
- ProtocolViolationException.cs
- RawAppCommandInputReport.cs
- _TLSstream.cs
- DictionaryEntry.cs
- TextBoxLine.cs
- Configuration.cs
- DesignSurfaceServiceContainer.cs
- ObjectStateFormatter.cs
- EntityContainerAssociationSet.cs
- RemotingException.cs
- TimeSpanConverter.cs
- SyndicationLink.cs
- EditingMode.cs
- StorageBasedPackageProperties.cs
- CodeIdentifier.cs
- VisualStyleRenderer.cs
- RewritingValidator.cs
- InputLangChangeEvent.cs
- DockingAttribute.cs
- Console.cs
- AppModelKnownContentFactory.cs
- CheckBox.cs
- GradientStop.cs
- InputProcessorProfilesLoader.cs
- ObjectAnimationBase.cs
- ManagementObject.cs
- WebPartMenu.cs
- _NtlmClient.cs
- TextMetrics.cs
- ManifestBasedResourceGroveler.cs
- AssemblyResourceLoader.cs
- CatalogZone.cs
- MonthChangedEventArgs.cs
- HostingPreferredMapPath.cs
- GZipDecoder.cs
- ArgumentValue.cs
- MemoryRecordBuffer.cs
- MasterPageCodeDomTreeGenerator.cs
- WeakEventManager.cs