Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProfileBuildProvider.cs
- CaseCqlBlock.cs
- ADMembershipUser.cs
- FragmentQueryKB.cs
- WebHeaderCollection.cs
- InvalidCastException.cs
- ActivityCompletionCallbackWrapper.cs
- XPathEmptyIterator.cs
- DocumentPageHost.cs
- EndPoint.cs
- IntegrationExceptionEventArgs.cs
- CodeExporter.cs
- RecommendedAsConfigurableAttribute.cs
- WebContext.cs
- XhtmlConformanceSection.cs
- Compiler.cs
- ApplicationBuildProvider.cs
- TableLayoutRowStyleCollection.cs
- SecurityDocument.cs
- AppSettingsExpressionBuilder.cs
- NotImplementedException.cs
- CustomAttributeFormatException.cs
- ConfigurationLocationCollection.cs
- MessageBox.cs
- ContextProperty.cs
- BitmapEffectGroup.cs
- EntityDataSourceMemberPath.cs
- BulletedListDesigner.cs
- CacheMemory.cs
- DateTimeValueSerializerContext.cs
- ConfigurationUtility.cs
- ObjectDataSourceEventArgs.cs
- BaseProcessor.cs
- FieldAccessException.cs
- AttachInfo.cs
- ApplicationGesture.cs
- ReferenceSchema.cs
- NameValuePermission.cs
- LogLogRecordEnumerator.cs
- StateItem.cs
- CodeDelegateInvokeExpression.cs
- PropertyEmitter.cs
- CodeAttributeDeclaration.cs
- InternalConfigRoot.cs
- LocationSectionRecord.cs
- Attributes.cs
- ScriptingSectionGroup.cs
- PathGradientBrush.cs
- PropertyEmitter.cs
- PersonalizationProvider.cs
- DataGridItemEventArgs.cs
- CustomTypeDescriptor.cs
- SystemIcmpV6Statistics.cs
- Int64Animation.cs
- BuiltInPermissionSets.cs
- MissingMemberException.cs
- AddressHeaderCollectionElement.cs
- DecimalConstantAttribute.cs
- PipeStream.cs
- GlobalizationAssembly.cs
- SqlGatherConsumedAliases.cs
- SystemIPInterfaceStatistics.cs
- Compress.cs
- StringComparer.cs
- EventProvider.cs
- DeclaredTypeValidatorAttribute.cs
- SkipStoryboardToFill.cs
- XmlArrayItemAttribute.cs
- listitem.cs
- BindingValueChangedEventArgs.cs
- AsymmetricSignatureFormatter.cs
- ActivityTypeDesigner.xaml.cs
- WebPartDisplayModeCollection.cs
- Bezier.cs
- CodeParameterDeclarationExpression.cs
- GridViewCancelEditEventArgs.cs
- TextOnlyOutput.cs
- TextRangeEditLists.cs
- RijndaelCryptoServiceProvider.cs
- ArgumentOutOfRangeException.cs
- DistinctQueryOperator.cs
- BatchWriter.cs
- ExpressionPrinter.cs
- CheckPair.cs
- CompositeFontParser.cs
- TypeInfo.cs
- TemplatedMailWebEventProvider.cs
- SqlRowUpdatedEvent.cs
- CustomError.cs
- SurrogateDataContract.cs
- UpdateException.cs
- SerializationInfoEnumerator.cs
- UnauthorizedWebPart.cs
- TraceContextEventArgs.cs
- cryptoapiTransform.cs
- UrlRoutingModule.cs
- CodeCommentStatement.cs
- SafeSystemMetrics.cs
- SapiAttributeParser.cs
- TileBrush.cs