После некоторого бою мне удалось получить действующее приложение веб-форм ASP.NET, которое использует расширение журнала Ninject и log4net как фреймворк регистрации. (кредиты основаны на this blog). Но у меня есть некоторые вопросы о том, как продолжить.Использовать log4net с расширениями ведения журнала Ninject в приложении WebForms
Во-первых, мне нужно было публиковать собственность ILogger, потому что она оставалась пустой, если она была частной или защищенной. Так что теперь у меня есть это:
[Inject]
protected ILogger _logger { get; set; }
Вместо:
private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Я могу жить с этим, но это кажется странным.
Другое дело - ThreadContext, который использует log4net для заполнения текущего контекста. Я до сих пор использовать его как этот
using (ThreadContext.Stacks["NDC"].Push(MethodBase.GetCurrentMethod().Name))
{
_logger.Info("test");
}
Но Offcourse, что отнимает все абстракции, что я только что добавленные .. Так что я ищу некоторую опыт/наилучшую практику, что другие люди могут иметь с этим сценарием.
Дополнительный вопрос: я обновил log4net до 1.2.11.0, который является текущей версией в NuGet, и теперь Ninject.Logging.log4net поврежден, потому что он ожидает версию 1.2.10.0 ... есть способ исправить это ?
Я не знаю, как использовать это .. Я держу в конечном итоге с версии 1.2.11. – Hanno
Я редактирую свой ответ, это атрибут allowedVersion, который необходимо изменить. Сначала вы должны удалить версию 1.2.11. Затем обновите файл packages.config и запустите команду install-package. – user484189