Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / SMDiagnostics / System / ServiceModel / Diagnostics / PiiTraceSource.cs / 1 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DiscoveryClientChannelBase.cs
- DataGridViewCellValueEventArgs.cs
- DataTableCollection.cs
- SpellerInterop.cs
- MonitorWrapper.cs
- Site.cs
- SubMenuStyle.cs
- SeverityFilter.cs
- RawStylusInputReport.cs
- AssociationTypeEmitter.cs
- RowVisual.cs
- XmlDataProvider.cs
- ResourcePermissionBaseEntry.cs
- StorageAssociationSetMapping.cs
- QueryAccessibilityHelpEvent.cs
- ColumnMapTranslator.cs
- TraceSection.cs
- BufferBuilder.cs
- FixedSOMContainer.cs
- BinaryReader.cs
- CompoundFileStorageReference.cs
- SchemaAttDef.cs
- FontEmbeddingManager.cs
- RsaSecurityToken.cs
- Accessors.cs
- EntityParameter.cs
- CatalogZoneDesigner.cs
- EndpointPerformanceCounters.cs
- StreamSecurityUpgradeInitiatorBase.cs
- LoopExpression.cs
- ListViewGroup.cs
- EdmProperty.cs
- BamlReader.cs
- MultiTouchSystemGestureLogic.cs
- Dynamic.cs
- DataGrid.cs
- InstanceCompleteException.cs
- DeferredTextReference.cs
- DataList.cs
- WebBrowserContainer.cs
- AssemblyInfo.cs
- securitymgrsite.cs
- FunctionQuery.cs
- MasterPageParser.cs
- CompatibleComparer.cs
- DataObjectCopyingEventArgs.cs
- EntityDataSourceStatementEditor.cs
- SqlConnectionFactory.cs
- SchemaConstraints.cs
- DataList.cs
- ProfileEventArgs.cs
- AnnotationAdorner.cs
- DirectionalLight.cs
- ItemCheckedEvent.cs
- TimelineGroup.cs
- InlinedAggregationOperatorEnumerator.cs
- FrameSecurityDescriptor.cs
- LocalizableAttribute.cs
- ExpressionCopier.cs
- WebSysDisplayNameAttribute.cs
- TreeWalker.cs
- ToolStripControlHost.cs
- Int64.cs
- ScalarType.cs
- ActivityDelegate.cs
- ConfigPathUtility.cs
- ValidatedControlConverter.cs
- CompatibleComparer.cs
- AppDomain.cs
- Property.cs
- CaseStatementSlot.cs
- Policy.cs
- BindingsSection.cs
- PolicyException.cs
- SharedPerformanceCounter.cs
- versioninfo.cs
- AnonymousIdentificationModule.cs
- SmtpAuthenticationManager.cs
- SiteMap.cs
- ListItemDetailViewAttribute.cs
- XmlEntityReference.cs
- AuthorizationRule.cs
- FormViewUpdateEventArgs.cs
- MaterialGroup.cs
- ReaderWriterLockWrapper.cs
- CodeArrayIndexerExpression.cs
- CodeStatementCollection.cs
- StreamInfo.cs
- FragmentQuery.cs
- ManifestResourceInfo.cs
- StackBuilderSink.cs
- AnonymousIdentificationModule.cs
- MSG.cs
- XmlBaseWriter.cs
- CookieHandler.cs
- Lease.cs
- SocketInformation.cs
- JsonXmlDataContract.cs
- IISMapPath.cs
- HelpEvent.cs