Search code examples
c#windows-servicestopshelf

Console.WriteLine() inside a Windows Service?


I am currently using TopShelf with a Console Application to create a Windows Service. When I run the code as a console application I use a few Console.WriteLine() to output results. Once the code does what it is supposed to do I install the console application as a Windows Service.

Are there any downsides with leaving the Console.WriteLine() code even though a Windows Service can not write to the console? Are there any risks of having unstable code if I leave the Console.WriteLine() in there?


Solution

  • The output will simply be discarded.

    In a Windows Service there is no Console so Console.Write* output is discarded. There are a number of alternatives:

    1. The System.Diagnostics.Trace class has a similar interface to the Console class so you could migrate your code quite easily to this.
    2. It can then be configured to output to a file. You can use the System.Diagnostics.EventLog class to write to the Event Log which you can then monitor using Event Viewer.
    3. You can use the third-party open-source log4net library which is very flexible.