Pregunta

Al iniciar sesión con Log4Net, es muy fácil colocar la clase que llamó al registro en el archivo de registro.En el pasado descubrí que esto hace que sea muy fácil rastrear el código y ver el flujo a través de las clases.En Log4Net uso la propiedad %logger en el patrón de conversión así:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

Y esto me da el resultado que quiero:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

Puede ver en el resultado que la clase que llamó al registro es Log4NetTechDemo.Tester, por lo que puedo rastrear el error hasta esa clase con bastante facilidad.

En el bloque de aplicación de registro no puedo entender cómo hacer esto con una simple llamada de registro.¿Alguien sabe cómo se puede hacer?Si es así, un ejemplo o los pasos para hacerlo serían de gran ayuda.

¿Fue útil?

Solución

Agregue el método de llamada al diccionario ExtendedProperties de LogEntry;suponiendo que no haya eliminado los tokens ExtendedProperties de la plantilla del formateador, por supuesto.

Ponga algo como esto en un contenedor de registro:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

Llamar a esto produce algo como esto al final del registro:

Extended Properties: Called from - LAB_Demo.Tester

Otros consejos

No hemos encontrado una manera fácil sin acceder a StackTrace.Si es una excepción, simplemente tomamos de eso:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

Para elementos conversadores, simplemente escribimos la cadena.Tenemos un fragmento que puede capturar el nombre de la clase al insertarlo.También declaramos la cadena constante con el nombre de la clase.

No es bonito, pero es lo mejor que hemos encontrado.Espero que alguien más tenga una mejor respuesta en este hilo :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top