См. Мой ответ на предыдущий вопрос. Может быть, это поможет, а может и нет.
Подведем итог:
Common.Logging (NET) сообщает на своем веб-сайте , что поддержка "context" запланирована для "следующего" выпуска.
На веб-сайте неясно, когда запланирован следующий выпуск (текущий выпуск 2.0). На сайте написано "Июнь". Текущая версия (2.0) была выпущена в апреле 2009 года. Последнее обновление веб-сайта состоялось в мае 2009 года (может быть, анонсирован 2.0)? Что значит "июнь"? Июнь 2009? Июнь 2010? Оба приходили и уходили.
Учитывая, что поддержка "контекста" еще не доступна в Common.Logging, взгляните на реализацию "контекста" в проекте Castle (реализация log4net здесь ). Нетрудно перенести эту реализацию на Common.Logging. Риск заключается в том, что реализация контекста, которая в конечном итоге исходит от Common.Logging, может быть не похожа на реализацию Castle.
Поддержка контекста Castle реализована в интерфейсе ILog / ILogger. Итак, вместо того, чтобы устанавливать контекст следующим образом:
Доступ к контексту через прямой log4net:
log4net.GlobalContext.Properties["BrokerID"] = 10;
Доступ к контексту через логирование абстракции:
ILog logger = Common.Logging.LogManager.GetCurrentClassLogger();
logger.GlobalContext.Properties["BrokerID"] = 10;
Это выглядит довольно неплохо с точки зрения настройки контекста, когда у вас есть регистратор. Может быть, не очень хорошо, если вы просто хотите установить контекст, не получив регистратор. Если Common.Logging.LogManager знает, какая абстракция является «активной» (и должна это делать, потому что абстракция может быть установлена / получена через свойство LogManager.Adapter). Таким образом, возможно, «контекст» может быть доступен из интерфейса ILog, а также из интерфейса LogManager.Adapter.