Si se puede hacer, te sugiero que revises la documentación sobre el espacio de nombres
System.Diagnostics, en especial las clases Debug, Trace, TextWriterTraceListener y EventLogTraceListener.
La clase Debug permite realizar el seguimiento de las cosas que consideres que son importantes, lo mismo hace la clase Trace, la diferencia está que Debug está activo por defecto cuando la aplicación está en desarrollo (se genera información de depuración - pdb's), pero cuando la aplicación está en producción, esto no va a funcionar, a menos que lo habilites manualmente. Por el otro lado Trace está disponible por defecto en ambas situaciones.
Las clases TextWriterTraceListener y EventLogTraceListener, permiten almacenar la información de seguimiento o depuración en diferentes recursos: objetosTextWriter, Stream y también el Registro de Sucesos del sistema operativo (para lo cual la aplicación debe tener los permisos necesarios)
Saludos