Come definire un TraceListener predefinito, che viene automaticamente aggiunto a tutte le TraceSources, in un progetto net 4.0 C#?Aggiungere un TraceListener predefinito per tutte le TraceSources in App.config
Attualmente ho elencare ogni TraceSource nome che uso nel file App.config in questo modo:
<system.diagnostics>
<sharedListeners>
<add name="MyListener" type="MyListenerType,MyAssemblyName" />
</sharedListeners>
<sources>
<source name="Class1" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class2" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class3" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
... repeat for a gazillion classes ...
</sources>
<system.diagnostics>
Sto usando uno SharedListener che dovrebbe ricevere tutte le uscite da tutti i TraceSources, se non diversamente specificato. Con la sintassi sopra, questo richiede una voce manuale per ogni TraceSource.
Ogni volta che introduco una nuova classe con una nuova TraceSource, devo aggiornare App.Config. Se più programmi utilizzano quell'assembly, devo aggiornare più App.Config. Un errore di ortografia durante l'aggiornamento di queste voci non produrrà alcun errore, ma ometterà silenziosamente tutto l'output di traccia dalla sorgente corretta.
C'è un modo per impostare un TraceListener predefinito tramite App.config, in modo tale che devo solo assegnare un nome specifico a TraceSources se voglio deviare dal valore predefinito?
I * do * ha ascoltatori condivisi. Il Listener 'MyListener' nel mio esempio è un listener condiviso, altrimenti non potrei farvi riferimento per nome quando lo aggiungo. (Cercherò di renderlo più chiaro nella domanda). Ma con la configurazione corrente, ho ancora bisogno di aggiungere questo listener condiviso a * ogni singolo TraceSource *. Sto cercando un modo per evitare di ripetere ogni nome di TraceSource in App.Config, rischiando di perdere o di sbagliare uno. – HugoRune
Siamo spiacenti. Quindi è necessario modificare machine.config o farlo in codice all'avvio dell'applicazione, ma è necessario riflettere per ottenere l'elenco privato delle fonti di traccia per aggiungere tutti gli ascoltatori. – MatthewMartin