<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Debugging once you go live: Trace Listeners</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1974.aspx</link><pubDate>Sat, 14 May 2005 07:12:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1974</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1974.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=1974</wfw:commentRss><description>&lt;p&gt;&lt;font face="Georgia" size="2"&gt;Πόσες και πόσες φορές δεν θα θέλαμε το &lt;font face="Courier New"&gt;Debug.WriteLine&lt;/font&gt; να το έχουμε όταν έχουμε κάνει deploy μια εφαρμογή για να αντιμετωπίσουμε προβλήματα. Το παρακάτω άρθρο πραγματεύεται ένα τρόπο για να έχουμε τα θεμιτά αποτελέσματα.&lt;br /&gt;&lt;/font&gt;&lt;br /&gt; &lt;table class="itemlayout" bordercolor="#cccccc" cellspacing="0" cellpadding="0" width="90%" align="center" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td class="controlbutton" align="middle" width="25"&gt;&lt;/td&gt; &lt;td class="windowtitle" width="100%"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;strong&gt;Debugging once you go live: Trace Listeners&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt; &lt;td class="closebutton" width="25"&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="windowbackground" colspan="3"&gt; &lt;p align="justify"&gt;&lt;font face="Tahoma" size="2"&gt;I wanted a way to debug our windows forms application once it was deployed to a client machine (Release build).&amp;nbsp; I use &lt;font face="Courier New"&gt;Debug.WriteLine&lt;/font&gt; and friends when debugging from the IDE, (Debug build)&amp;nbsp;using the Output Window to see my output.&amp;nbsp; How does one do this with a release build though?&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;With the help of the good folks on&amp;nbsp;&lt;a target="_blank" title="mailto://DOTNET-CLR@DISCUSS.DEVELOP.COM" href="mailto://DOTNET-CLR@DISCUSS.DEVELOP.COM"&gt;DOTNET-CLR(at)DISCUSS.DEVELOP.COM&lt;/a&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;, I got this figured out.&amp;nbsp;Trace Listeners and Trace Switches are your friends.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I added this to our app.config file:&lt;/font&gt;&lt;/p&gt;&lt;font face="Arial" size="2"&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#800000" size="2"&gt;system.diagnostics&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;switches&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#008000" size="2"&gt;-- Enable/disable profiling messages (0 = disable, 1 = enable) --&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;add&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="bsProfile"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;value&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="1"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;switches&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;trace&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;autoflush&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="true"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;indentsize&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;="4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;listeners&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;add&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;name&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;="FileListener"&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;="System.Diagnostics.TextWriterTraceListener"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;initializeData&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=".\AMNETRunTrace.txt"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;listeners&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;trace&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;system.diagnostics&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;When our app loads, I do this:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=""&gt;&lt;font face="Courier New" size="2"&gt;bsProfile = &lt;font color="#0000ff"&gt;New&lt;/font&gt; BooleanSwitch("bsProfile", "Define whether profile information is displayed")&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Now, when I want to insert some 'debug' statements, I do this:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;Trace.WriteLineIf(bsProfile.Enabled, "User clicked the Send button")&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Which says "write 'User clicked the Send button' to the AMNETRunTrace.txt file if &lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;add&lt;/font&gt;&lt;font color="#ff00ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;="bsProfile"&lt;/font&gt;&lt;font color="#ff00ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;="1"&lt;/font&gt;&lt;font color="#ff00ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/font&gt;"&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;By default, I'll set &lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;add&lt;/font&gt;&lt;font color="#ff00ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;="bsProfile"&lt;/font&gt;&lt;font color="#ff00ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;font color="#0000ff"&gt;="1"&lt;/font&gt;&lt;font color="#ff00ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If I need to debug something on a user's machine, I'll set it back to 1 (most likely ask them to do this)&amp;nbsp;so I'll see my output in the text file.&amp;nbsp; Once I am done debugging, set it back to 0 and delete the file.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;You can also output to the Event Log and Output window out of the box, or you could create your own custom listener, like an email listener that sends your support desk an email when something bad happens.&lt;/font&gt;&lt;/p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;img height="1" src="http://weblogs.asp.net/grobinson/aggbug/406742.aspx" width="1" /&gt;&lt;/font&gt;&lt;a target="_blank" title="http://weblogs.asp.net/grobinson/archive/2005/05/13/406742.aspx" href="http://weblogs.asp.net/grobinson/archive/2005/05/13/406742.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;Original Link&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/a&gt; &lt;div class="newsitemfooter"&gt;&lt;font face="Tahoma" size="2"&gt;Today 22:29 | Greg Robinson&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;br /&gt;&lt;font face="Georgia" size="2"&gt;George J.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;</description></item></channel></rss>