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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.