Forum: PC-Programmierung C# Debug-Ausgabe aktivieren


von CsharpUser (Gast)


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.)

von Borislav B. (boris_b)


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.

: Bearbeitet durch User
von CsharpUser (Gast)


Lesenswert?

In eine Log-Datei sollen die Ausgaben abgelegt werden.

von Borislav B. (boris_b)


Lesenswert?

CsharpUser schrieb:
> In eine Log-Datei sollen die Ausgaben abgelegt werden.

Ja dann: definitiv Log4net :-)

von R. Rebentrost (Gast)


Lesenswert?

Eine Möglichkeit wurde ja schon genannt, aber bevor du dich 
entscheidest, könntest du dir mögliche Alternativen ansehen.

http://www.dotnetlogging.com/

Ansonsten kann man auch mal per NuGet suchen (Website oder direkt in der 
VS-Paketverwaltung).

von Arc N. (arc)


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...

von bluppdidupp (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.