This documentation is archived and is not being maintained.

TraceListener.GetSupportedAttributes Method

Gets the custom attributes supported by the trace listener.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

protected internal virtual string[] GetSupportedAttributes ()
protected String[] GetSupportedAttributes ()
protected internal function GetSupportedAttributes () : String[]
Not applicable.

Return Value

A string array naming the custom attributes supported by the trace listener, or a null reference (Nothing in Visual Basic) if there are no custom attributes.

The default implementation for GetSupportedAttributes returns a null reference (Nothing in Visual Basic).

Notes to Inheritors: When inheriting from the TraceListener class or a derived class, you can override the GetSupportedAttributes method to provide custom attributes for your class.

The following code sample shows an override of the GetSupportedAttributes method for a custom trace listener.

// This code example uses the following application configuration file:

//<?xml version="1.0" encoding="utf-8"?>
//  <system.diagnostics>
//    <sources>
//      <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
//        <listeners>
//          <add name="Testlistener" />
//        </listeners>
//      </source>
//    </sources>
//    <switches>
//      <add name="SourceSwitch" value="Warning" />
//    </switches>
//    <sharedListeners>
//      <add name="Testlistener" type="CustomTraceListener.TestListener, CustomTraceListener, Version=, Culture=neutral, PublicKeyToken=null" initializeData="TestListener" Source="test"/>
//    </sharedListeners>
//    <trace autoflush="true" indentsize="4" />
//  </system.diagnostics>

using System;
using System.Diagnostics;
using System.Configuration;
using System.Reflection;
using System.Collections;
namespace CustomTraceListener
    class Program
        static void Main(string[] args)
            TraceSource ts = new TraceSource("TraceTest");
            foreach (TraceListener traceListener in ts.Listeners)
                Console.Write("TraceListener: " + traceListener.Name + "\t");
                // The following output can be used to update the configuration file.
                Console.WriteLine("AssemblyQualifiedName = " +
            ts.TraceEvent(TraceEventType.Error, 1, "test error message");
    public class TestListener : TraceListener
        string source;
        string name;
        public TestListener(string listenerName)
            name = listenerName;

        public string Source
                foreach (DictionaryEntry de in this.Attributes)
                    if (de.Key.ToString().ToLower() == "source")
                        source = de.Value.ToString();
                return source;
            set { source = value; }

        public override void Write(string s)
            Console.Write(name + " " + Source + ": " + s);
        public override void WriteLine(string s)
        protected override string[] GetSupportedAttributes()
            return new string[] { "Source" };

// This code example creates the following output:
TraceListener: Default  AssemblyQualifiedName = System.Diagnostics.DefaultTraceL
istener, System, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e0
TraceListener: Testlistener     AssemblyQualifiedName = CustomTraceListener.Test
Listener, CustomTraceListener, Version=, Culture=neutral, PublicKeyToken=
TestListener test: TraceTest Error: 1 : test error message

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0