Estamos utilizando NLog para iniciar sesión en una aplicación web C# MVC3. Todos nuestros controladores amplían una base personalizada "ApplicationController" que nos da acceso a los métodos y methodes constantemente necesarios. .Tipo de clase derivada de C# necesaria en la base para el registro con NLog
me gustaría tener todos los controladores de acceso al registrador a través de esta clase base, pero quiero el detalle de saber qué clase derivan las declaraciones de registro se originaron en
Nuestro controlador de aplicación es el siguiente:
public abstract class ApplicationController : Controller
{
protected Logger _logger;
protected virtual Logger Logger
{
get { return _logger ?? (_logger = LogManager.GetCurrentClassLogger()); }
}
protected ApplicationController()
{
Context = new Entities();
}
Si un controlador derivado no anula el registrador, todas las declaraciones mostrarán que se originaron desde el controlador de la aplicación. Actualmente, tengo esencialmente la misma declaración de Logger en todos los controladores derivados. Por ejemplo:
public class PropertyController : ApplicationController
{
private readonly DatatapeService _datatapeService;
private readonly PropertyService _propertyService;
protected override Logger Logger
{
get { return _logger ?? (_logger = LogManager.GetCurrentClassLogger()); }
}
Obviamente, esta es una práctica de implementación deficiente.
- ¿Cómo puedo secar esto? Específicamente, ¿cuál es mi comprensión de C# que falta para lograr exactamente esta tarea específica?
- ¿Existe un patrón de registro que debería seguir cuando no estoy exponiendo la clase de registro (NLog) directamente?
TIA!
Creo 'this.GetType(). Name' debe hacerlo. –
Esto es exactamente lo que fui. No me di cuenta de esto. GetType devolvería la clase más derivada. Esto me permitió crear una sola propiedad en mi ApplicationController y luego usar ese registrador en toda la aplicación. –
Me alegro de ser de ayuda y gracias por la marca: D –