Con frecuencia me siento frustrado por la cantidad de registros que tengo que incluir en mi código y me lleva a preguntarme si existe una forma mejor de hacer las cosas.¿Es posible el registro pasivo en .NET?
No sé si esto se ha hecho o si alguien ha tenido una mejor idea, pero me preguntaba si hay alguna forma de que alguien sepa de "inyectar" un registrador en una aplicación para que monitoree pasivamente el enhebrar y registra en silencio los procesos que se producen sin tener que hacer cosas como:
public void MyProcess(int a, string b, object c)
{
log(
String.Format(
"Entering process MyProcess with arguments: [a] = [{0}]; [b] = [{1}]; [c] = [{2}]",
a.ToString(),
b,
c.ToString()
);
try
{
int d = DoStuff(a)
log(
String.Format(
"DoStuff({0}) returned value {1}",
a.ToString(),
d.ToString()
)
);
}
catch (Exception ex)
{
log(
String.Format("An exception occurred during process DoStuff({0})\nException:\n{1}",
a.ToString(),
ex.ToString())
)
}
}
¿Cuál sería grande es si podría decirle a mi registrador:
Monitor(MyClass.MyMethod)
sería entonces monitorear todo lo que pasa dentro de ese método, incluidos argumentos pasados a lo largo de wi las llamadas al método y los valores pasados a esos métodos, excepciones que ocurren, etc.
¿Alguien ha implementado algo como esto en el pasado? ¿Podría incluso ser implementado? ¿Iniciar sesión de esta manera es solo un sueño?
Me encantaría diseñar algo que hiciera esto, pero simplemente no sé dónde comenzaría. Por supuesto, tampoco quiero reinventar la rueda, si ya está hecho, sería genial si alguien pudiera señalarme en la dirección correcta.
Cualquier sugerencia sería bien recibidas ...
Editar: pensé que comentar sobre una respuesta que preguntó en cuanto al nivel de detalle requerido en el registro. A menudo se requiere que se proporcionen niveles de registro configurables, de modo que si la configuración especifica un registro detallado, todo se registra, mientras que si se configura el registro crítico, solo se registra cierta información junto con las excepciones. Si se configura el registro fatal, entonces solo se registrará la información que causa la muerte de la aplicación. ¿Sería algo así configurable o el AOP requeriría 3 o 4 compilaciones diferentes según el número de niveles de registro?
frecuencia utilizo 4 niveles: Fatal, crítico, información, detalladas
Esto podría ser configurable en tiempo de ejecución pero luego el registrador que se ejecuta durante el tiempo de ejecución aún recibiría toda la información y luego tendría que decidir qué registrar. Si no quiere que la sobrecarga de toda la información pase al registrador, entonces la única forma sería tener diferentes compilaciones. –