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()

Return Value

Type: System.String[]
A string array naming the custom attributes supported by the trace listener, or null if there are no custom attributes.

The default implementation for GetSupportedAttributes returns null.

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

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.