C# Debug-Ausgabe aktivieren

Gast #4205304
Lesenswert?
• ▲
▼
Guten Morgen,

meine C# Applikation möchte ich um eine Debug-Ausgabe erweitern. Diese 
Ausgabe soll allerdings nur dann aktiviert sein, sobald der Anwender 
bzw. Entwickler von außen eine Maßnahme durchführt. Ist sowas in C# 
möglich? Und wenn ja wie würde dies funktionieren? Die Debug-Ausgabe 
funktioniert im folgenden ja so:
1
Debug.WriteLine("Debug-Ausgabe");

(Meine Applikation ist bereits im Release Modus ubersetzt.)
#4205306
Lesenswert?
• ▲
▼
CsharpUser schrieb:
> Ist sowas in C# möglich?

Sicherlich. Debug.WriteLine wird aber vermutlich im Release-Build nicht 
funktionieren.

CsharpUser schrieb:
> meine C# Applikation möchte ich um eine Debug-Ausgabe erweitern

Wohin soll denn ausgegeben werden?
 - Visual Studio Output Window?
 - Stdout?
 - Eine Log-Datei?
 - Webserver?
 - Datenbank?
 - ...

CsharpUser schrieb:
> iese
> Ausgabe soll allerdings nur dann aktiviert sein, sobald der Anwender
> bzw. Entwickler von außen eine Maßnahme durchführt.

Wie genau soll das aussehen?


Du könntest dir ja mal Log4net ansehen, das bietet vermutlich alles was 
du willst.
#4205678
Lesenswert?
• ▲
▼
CsharpUser schrieb:
> Guten Morgen,
>
> meine C# Applikation möchte ich um eine Debug-Ausgabe erweitern. Diese
> Ausgabe soll allerdings nur dann aktiviert sein, sobald der Anwender
> bzw. Entwickler von außen eine Maßnahme durchführt. Ist sowas in C#
> möglich? Und wenn ja wie würde dies funktionieren? Die Debug-Ausgabe
> funktioniert im folgenden ja so:
>
>
1
> Debug.WriteLine("Debug-Ausgabe");
2
>
>
> (Meine Applikation ist bereits im Release Modus ubersetzt.)

Mit Debug.irgendwas nicht mehr, da die alle das ConditionalAttribute 
gesetzt haben d.h. ist DEBUG nicht mehr definiert, werden die 
Debug.irgendwas Aufrufe nicht mehr mit übersetzt.

Aber es gibt die Funktionen auch noch mal als Trace.irgendwas.
Sowohl Debug als auch Trace haben die gemeinsame Eigenschaft Listeners 
wo eigene Listener eingehangen werden können, die die Ausgaben dann 
irgendwo hinschreiben, übertragen etc.

Fertige Listener gibt's im Framework
https://msdn.microsoft.com/de-de/library/system.diagnostics.textwritertracelistener%28v=vs.110%29.aspx

Und den DefaultTraceListener kann man entfernen
Trace.Listeners.Remove(DefaultTraceListener) und durch was passenderes 
ersetzen
https://msdn.microsoft.com/de-de/library/system.diagnostics.debug.listeners%28v=vs.110%29.aspx

Fehlt nur noch, dass beim Übersetzen jetzt TRACE definiert sein muss, 
sonst fallen die Trace.irgendwas-Aufrufe wieder raus...
Gast #4206089
Lesenswert?
• ▲
▼
Arc N. schrieb:
> Mit Debug.irgendwas nicht mehr, da die alle das ConditionalAttribute
> gesetzt haben d.h. ist DEBUG nicht mehr definiert, werden die
> Debug.irgendwas Aufrufe nicht mehr mit übersetzt.

Hmm, trifft das wohl auch auf System.Diagnostics.Debugger.Log zu?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren