I received this from Microsoft. To configure you the listeners and level of logging for a listener you need a reference to the listener that is going to be doing the tracing. Your call to create a new TraceSource object creates a trace source with the same name as the one used by the System.Net.Sockets classes, but it's not the same trace source object, so any changes do not have an effect on the actual TraceSource object that System.Net.Sockets is using. Because of this, you'll need to use the application configuration file to enable the trace. The tracing config settings lets you listen to messages from a trace source (in this case from Socket classes) but the TraceSource instance itself remains private and inaccessible directly/programmatically. Think of it this way – you don’t want to grant direct access to your trace source instance and let someone send messages under disguise but you do want to allow operations to configure what level of information you trace and where you trace etc…