They should always be static.
- If you inspect the MS source code, the TraceSource is put into a static collection. (I suppose the Novel (Mono) source code is the same.
- A trace source with the same name behaves the same throughout the assembly, so no need for separate ones.
- The TraceSource creates noncollectable garbage due to its use of WeakReference objects (or due to the static scope... static things have funny garbage collection rules): http://blog.perfectlytogether.com/2009/12/29/howto-solve-a-memory-leak-issue-caused-by-weakreference-objects/