example c# windows-services topshelf

c# - example - topshelf nuget



Console.WriteLine() dentro de un servicio de Windows? (4)

Actualmente estoy usando TopShelf con una aplicación de consola para crear un servicio de Windows. Cuando ejecuto el código como una aplicación de consola, uso algunos Console.WriteLine () para generar resultados. Una vez que el código hace lo que se supone que debo hacer, instalo la aplicación de la consola como un Servicio de Windows.

¿Hay algún inconveniente al dejar el código Console.WriteLine () a pesar de que un servicio de Windows no puede escribir en la consola? ¿Existe algún riesgo de tener un código inestable si dejo la Console.WriteLine () allí?


La salida siempre se descartó hasta Windows Server 2008R2. Deje un console.writeline () en un servicio instalado en ese sistema operativo, y obtendrá un error 1067 al iniciar / ejecutar el servicio, dependiendo de la posición de la línea de escritura ().


No, la clase de consola escribirá de forma segura en STDOUT, pero simplemente no verá la salida.


Si utiliza la funcionalidad System.Diagnostics.Trace, puede redirigir la salida utilizando los detectores y los detectores. Si compilas con el símbolo TRACE, se incluirá el código. Si no agrega TRACE, no se compilará en el proyecto.

Si ejecuta sus servicios como consola para la depuración, el seguimiento se enviará a la consola de forma predeterminada. He empezado a usar Trace en lugar de las escrituras de Debug o Console, ya que puedo, desde el archivo de configuración, enviar la información de rastreo a cualquier combinación de archivos, pantalla, base de datos, etc.


La salida simplemente será descartada .

En un servicio de Windows no hay consola, por lo que la salida de Console.Write * se descarta. Hay una serie de alternativas:

  1. La clase System.Diagnostics.Trace tiene una interfaz similar a la clase Console, por lo que podría migrar su código con bastante facilidad.
  2. Luego se puede configurar para que salga a un archivo. Puede usar la clase System.Diagnostics.EventLog para escribir en el registro de eventos que luego puede monitorear usando el Visor de eventos.
  3. Puede utilizar la biblioteca log4net de código abierto de terceros, que es muy flexible.