2010-01-07 23 views
5

Deseo poder escribir entradas en una aplicación de consola que describirá cuándo se han completado las acciones, posiblemente escribiéndolas en un archivo .txt en un punto.Depuración simple y registro usando System.Diagnostics

Me gustaría que se use con una aplicación de GUI separada que se ejecute al mismo tiempo para que pueda usar la aplicación y supervisar el registro simultáneamente.

Supongo que la clase de diagnóstico es la herramienta correcta para usar, sin embargo, nunca antes he usado ningún método de registro, por lo que acepto cualquier otra sugerencia.

Gracias

Respuesta

8

Consulte System.Diagnostics.Trace. Puede agregarle TraceListeners diferentes, incluidos oyentes para la consola o archivos. Luego reemplace todas sus llamadas Console.Write()/Console.WriteLine() con Trace.Write()/Trace.WriteLine() y estará bien. Incluso puede implementar su propio TraceListener (es muy fácil) para enviar los mensajes a su aplicación GUI.

+1

Además, puede usar System.Diagnostics.Debug para realizar el rastreo que solo está habilitado al realizar una compilación de depuración (técnicamente siempre que se establezca la constante del compilador DEPURAR). –

+0

Gracias Joel, ¿hay algún lugar en particular en el que pueda encontrar más información sobre cómo usarlo? Algo tan simple como un tutorial básico sería genial. –

+1

No vale la pena el problema: realmente solo está cambiando Console.Write() a Trace.Write(), y quizás agregue un system.diagnostics utilizando la referencia. –

2

Use DebugView de SysInternals para capturar la salida de depuración. Esta es una aplicación GUI separada que captura el resultado de rastreo/depuración.

Esta publicación, Using DebugView and C#, muestra un ejemplo.

1

Te recomiendo que comiences a usar log4net lo antes posible; es bastante trivial de usar (aunque la configuración es un poco compleja, necesita hacer algunas entradas de configuración), y puede ser un sistema bastante bello.

+4

¿Por qué no comparar?/contraste esta recomendación con la consideración del usuario de utilizar System.Diagnostics. Por un lado, obtiene System.Diagnostics de forma gratuita; log4net es un ensamblaje separado. Además, debido a que es parte del BCL, hay más posibilidades. Los desarrolladores de .NET saben cómo usar System.Diagnostics que podría beneficiar el mantenimiento del proyecto. –

+1

gWiz: Eres libre de hacer eso en tu propia respuesta :) Personalmente no veo el punto; no hay duda, en mi opinión, que el mejor enfoque es ir por log4net. Quizás podría explicar, en detalle, por qué, pero lo dejo como un ejercicio que se puede hacer con la investigación :) No todo tiene que ser alimentado a mano por las personas, y ciertamente, no tengo la paciencia para hacerlo. –

+0

Utilizo/usé nlog pero me moví a Azure. De repente, las cosas no fueron tan simples ya que tuve que volver a pensar en el registro de mi sistema de archivos y para iniciar sesión en una solución de almacenamiento en la nube que no era sencilla. Mi vista ahora? El diagnóstico del sistema no parece una manera tan tonta de avanzar después de todo. –

3

La solución de $ 0.25 es Proyecto + Propiedades, pestaña Aplicación, Tipo de salida = Aplicación de consola. Ahora tiene una ventana de consola y su interfaz de usuario normal. Todo lo que escriba con Console.WriteLine() terminará en la ventana de esa consola.

+0

¿Tendría que hacer esto si sigo la solución de Joel Coehoorn? –

+0

La sugerencia de Joel parece ser rastrear a un archivo, no a una consola. –

+0

La consola sería algo que necesito para ser visible, ¿es posible combinar tanto los métodos tuyos como los de Joel juntos? –

1

Aquí está mi respuesta francamente útil: use mi logging framework. A diferencia de otros frameworks de registro, es extremadamente fácil de usar y configurar. También tiene una huella muy pequeña. Además, viene con una pequeña aplicación que puede usar para ver sus registros en tiempo real. Me parece que es todo lo que necesitas.

+0

Eso suena muy prometedor, pero hay otras alternativas que son, sobre todo, gratuitas. –

+1

no gratuito: $ 5 no comercial, $ 49 por una licencia comercial/de sitio. –

Cuestiones relacionadas