PiiTraceSource.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK