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
- NetDataContractSerializer.cs
- DeploymentExceptionMapper.cs
- ConfigXmlAttribute.cs
- DataKey.cs
- OLEDB_Enum.cs
- Converter.cs
- PageThemeCodeDomTreeGenerator.cs
- WindowsUpDown.cs
- CanonicalXml.cs
- XmlSchemaSimpleContentRestriction.cs
- MsdtcClusterUtils.cs
- UpdatePanelTriggerCollection.cs
- DPAPIProtectedConfigurationProvider.cs
- HtmlAnchor.cs
- PrimarySelectionAdorner.cs
- MediaContext.cs
- ConfigurationException.cs
- Splitter.cs
- ConfigurationManagerHelper.cs
- DataGridViewElement.cs
- CursorInteropHelper.cs
- AnnouncementService.cs
- TypeAccessException.cs
- WindowVisualStateTracker.cs
- WindowsListBox.cs
- SubqueryRules.cs
- Soap.cs
- TaiwanCalendar.cs
- UIElementHelper.cs
- StringUtil.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- GroupQuery.cs
- PasswordBoxAutomationPeer.cs
- SapiRecoInterop.cs
- SafeCryptoHandles.cs
- RestHandler.cs
- CodeMemberProperty.cs
- XmlSchemaComplexContent.cs
- JsonReader.cs
- SecurityCriticalDataForSet.cs
- WorkItem.cs
- SpoolingTaskBase.cs
- DecoderFallbackWithFailureFlag.cs
- Pkcs9Attribute.cs
- SafeViewOfFileHandle.cs
- pingexception.cs
- PointAnimation.cs
- CommandID.cs
- EditorZoneBase.cs
- MenuAdapter.cs
- TextStore.cs
- ParamArrayAttribute.cs
- TextAnchor.cs
- CultureTableRecord.cs
- SystemIcmpV6Statistics.cs
- SemaphoreSecurity.cs
- FormViewDesigner.cs
- MediaScriptCommandRoutedEventArgs.cs
- CodeAccessPermission.cs
- ToolTipAutomationPeer.cs
- ProviderCommandInfoUtils.cs
- Comparer.cs
- DmlSqlGenerator.cs
- AdCreatedEventArgs.cs
- DataBoundControlHelper.cs
- DrawingCollection.cs
- SmiEventSink_Default.cs
- Helpers.cs
- List.cs
- OutputCacheProfile.cs
- SqlFacetAttribute.cs
- AvTrace.cs
- MessagePropertyAttribute.cs
- ScrollContentPresenter.cs
- ParameterRetriever.cs
- CrossContextChannel.cs
- Vector3DAnimationUsingKeyFrames.cs
- HtmlAnchor.cs
- IntegerFacetDescriptionElement.cs
- DataGridColumnCollection.cs
- StateRuntime.cs
- AttributeCollection.cs
- HtmlShimManager.cs
- NumberFormatter.cs
- EntityDataSourceQueryBuilder.cs
- DataGridPageChangedEventArgs.cs
- NullableBoolConverter.cs
- DynamicResourceExtensionConverter.cs
- ClientUtils.cs
- PerformanceCounterManager.cs
- EventProxy.cs
- NoPersistScope.cs
- CodeTypeReference.cs
- DataGridViewSelectedColumnCollection.cs
- ReachPrintTicketSerializerAsync.cs
- AspNetHostingPermission.cs
- DocumentScope.cs
- DefaultParameterValueAttribute.cs
- DbInsertCommandTree.cs
- ObjectTypeMapping.cs