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

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

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

.NET Framework

Supported in: 3.5, 3.0, 2.0