Con log4net, el uso de un registrador por clase facilita la captura de la fuente del mensaje de registro (es decir, la clase que escribe en el registro). Si no tiene un registrador por clase, sino que tiene un registrador para toda la aplicación, necesita recurrir a más trucos de reflexión para saber de dónde provienen los mensajes de registro.
Compare los siguientes:
Entrar por clase
using System.Reflection;
private static readonly ILog _logger =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public void SomeMethod()
{
_logger.DebugFormat("File not found: {0}", _filename);
}
Un registrador por aplicación (o similar)
Logger.DebugFormat("File not found: {0}", _filename); // Logger determines caller
-- or --
Logger.DebugFormat(this, "File not found: {0}", _filename); // Pass in the caller
Usando el segundo ejemplo, el registrador tendría que construir una pila trace para ver quién lo llama o su código siempre tendrá que pasar a la persona que llama. Con el estilo de logger por clase, aún lo hace, pero puede hacerlo una vez por clase en lugar de una vez por llamada y eliminar un problema grave de rendimiento.
hmm. parece que hay dos problemas aquí: uno tiene un objeto de registro real por clase y el otro tiene el nombre del registro igual a la clase. –