Использовать log4net с расширениями ведения журналов Ninject в приложении WebForms - PullRequest
0 голосов
/ 19 марта 2012

После некоторых трудностей мне удалось получить работающее приложение веб-форм ASP.NET, которое использует расширение ведения журнала Ninject и log4net в качестве основы ведения журнала.(кредиты этот блог для основ).Но у меня есть несколько вопросов о том, как продолжить.

Во-первых, мне нужно было сделать свойство 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");
}

Но выгода, которая убирает все абстракции, которые я только что добавил ... Поэтому я ищу некоторые опыты / лучшие практики, которые другие люди могут использовать в этом сценарии.

Дополнительный вопрос: я обновил log4net до версии 1.2.11.0, которая является текущей версией в NuGet, и теперь Ninject.Logging.log4net не работает, потому что он ожидает версию 1.2.10.0 ... есть ли способэто исправить?

1 Ответ

1 голос
/ 20 марта 2012

Дополнительный вопрос: я обновил log4net до 1.2.11.0, который является текущая версия в NuGet, а теперь Ninject.Logging.log4net не работает потому что он ожидает версию 1.2.10.0 ... есть ли способ это исправить?

Вы пытались исправить разрешенные версии с помощью [xx] в файле Packages.config?

  <package id="log4net" version="1.2.10"  allowedVersions="[1.2.10]" /> />

Это предотвратит обновление следующих обновлений до 1.2.11 или более.

http://docs.nuget.org/docs/reference/versioning

...