Не удается заставить log4net работать в субклассовом контроллере MVC3 - PullRequest
1 голос
/ 29 декабря 2011

У меня есть приложение MVC3, в котором я бы хотел, чтобы log4net работал.
Я получил код, который использую с этого сайта

Я могу заставить работать протоколирование, если добавлю этот код в метод Action.

  public ActionResult Index() {  
      log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());  
      log.Info("Here I am in Index.");   
      return View();  
  } 

Я хочу включить регистрацию на всех моих контроллерах, поэтому я добавил следующий класс в свой проект,

  public class LoggingController :Controller {
      protected log4net.ILog Log;

      public LoggingController () {
          Log = log4net.LogManager.GetLogger(GetType());
      }
  }

и мой контроллер Home наследуется от этого класса, LoggingController.

Я установил точку останова на конструкторе моего LoggingController и определил, что вызывается конструктор, однако при этом логирование не работает.

Мой вопрос:

Почему это не работает? ИЛИ ЖЕ Есть ли лучший способ выполнить то, что я пытаюсь сделать здесь?

Заранее спасибо.

1 Ответ

1 голос
/ 29 декабря 2011

Почему это не работает?

Поскольку аргумент типа, передаваемый методу GetLogger, должен совпадать с аргументом содержащего типа.Вы передаете HomeController (используя GetType()) вместо LoggingController, в котором объявлена ​​переменная.Попробуйте вот так:

public LoggingController () {
    Log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...