.net - job - Desarrollar una tarea programada para Windows
hangfire.net core (4)
AFAIK el programador acaba de iniciar un proceso. Puede usar el registro de eventos u otro sistema de registro para registrar la información que necesita consultar más adelante.
Tengo que desarrollar una aplicación usando C # .net que se debe ejecutar una vez al día. Solo se ejecuta durante un minuto como máximo, por lo que desarrollar un servicio de Windows es excesivo y una tarea programada es la adecuada.
Sin embargo, tengo algunas preguntas sobre cómo la aplicación puede comunicar sus resultados:
- ¿Cómo señalo al planificador de tareas que la tarea ha fallado? ¿Esto es a través del código de salida del programa?
- ¿Cómo registro la información de salida? ¿Se captura automáticamente la salida de la consola o debo escribir explícitamente en el visor de eventos?
Si utiliza el modo Archivo de registro , aún puede usar Console.WriteLine("blah"); . El truco consiste en redirigir los flujos de salida y error estándar:
StreamWriter mylog = new StreamWriter("mylog.log");
Console.SetOut(mylog);
Console.SetError(mylog);
También necesita vaciar los almacenamientos intermedios a menudo, para asegurarse de que el archivo de registro contiene información actual.
Console.Out.Flush();
Esto es rápido y sucio, realmente debería usar el registro de eventos de Windows o log4net .
Log4net es un marco de registro completo muy bueno. Lo puedo recomendar.
En respuesta a tus preguntas -
Si una tarea falla porque arrojó una excepción no verificada, verá que en el visor de tareas de Sheduled, habrá un ''Último resultado'' con un valor algo así como
0xe0434f4d. Alternativamente, si devuelve un código de salida que también se mostrará en la columna Último resultado del visor de tareas programadas.Escribir en la consola, por ejemplo
Console.WriteLine("blah");no aparecerá en ningún lado Debería escribir en el registro de eventos o en un archivo de registro.