public void TextWriterEventListenerConstructors()
        {
            // using defaults
            using (TextWriterEventListener listener = new TextWriterEventListener())
            {
                IdentityModelEventSource.Logger.LogLevel = EventLevel.Informational;
                listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational);
                IdentityModelEventSource.Logger.WriteWarning("This is a warning!");
                listener.DisableEvents(IdentityModelEventSource.Logger);
            }

            string logText = File.ReadAllText(TextWriterEventListener.DefaultLogFileName);

            Assert.Contains("This is a warning!", logText);
            File.Delete(TextWriterEventListener.DefaultLogFileName);

            // passing custom file path
            var filename = Guid.NewGuid().ToString() + ".txt";

            using (TextWriterEventListener listener = new TextWriterEventListener(filename))
            {
                listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational);
                IdentityModelEventSource.Logger.WriteWarning("This is a warning for custom file path!");
                listener.DisableEvents(IdentityModelEventSource.Logger);
            }

            logText = File.ReadAllText(filename);
            Assert.Contains("This is a warning for custom file path!", logText);
            File.Delete(filename);

            // using StreamWriter
            filename = Guid.NewGuid().ToString() + ".txt";
            Stream       fileStream   = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fileStream);

            using (TextWriterEventListener listener = new TextWriterEventListener(streamWriter))
            {
                listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational);
                IdentityModelEventSource.Logger.WriteWarning("This is a warning for streamwriter!");
                listener.DisableEvents(IdentityModelEventSource.Logger);
            }

            streamWriter.Flush();
            streamWriter.Dispose();
            logText = File.ReadAllText(filename);
            Assert.Contains("This is a warning for streamwriter!", logText);
            File.Delete(filename);
        }
        public void TextWriterEventListenerLogging()
        {
            var filename = Guid.NewGuid().ToString() + ".txt";
            var guid1    = Guid.NewGuid().ToString();
            var guid2    = Guid.NewGuid().ToString();
            var guid3    = Guid.NewGuid().ToString();

            IdentityModelEventSource.Logger.LogLevel = EventLevel.Verbose;
            using (TextWriterEventListener listener = new TextWriterEventListener(filename))
            {
                listener.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Informational);
                IdentityModelEventSource.Logger.WriteInformation(guid1);
                IdentityModelEventSource.Logger.WriteVerbose(guid2);
                IdentityModelEventSource.Logger.WriteCritical(guid3);
            }

            string logText = File.ReadAllText(filename);

            Assert.DoesNotContain(guid2, logText);
            Assert.Contains(guid1, logText);
            Assert.Contains(guid3, logText);

            File.Delete(filename);
        }