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