Как настроить ведение журнала в Spring.NET с помощью log4net?

Я хотел бы использовать аспект ведения журнала из библиотеки аспектов Spring.NET вместе с log4Net. Я нашел эту статью , как использовать log4Net с Common Logging API.

Мое тестовое приложение является консольным и основано на клиентском профиле .NET 4.0.

1-я попытка

Поэтому в своем проекте я ссылаюсь на следующие библиотеки:

  • Spring.Core версии 1.3.2.40943, среда выполнения v4.0.30319
  • Spring.AOP версии 1.3.2.40943, среда выполнения v4.0.30319
  • Версия Common.Logging: 1.2.0.0, среда выполнения v1.0.3705

Сборки, указанные выше, у меня из Program Files \ Spring.NET 1.3.2 \ bin \ net \ 4.0

  • Версия log4net: 1.2.10.0, среда выполнения v2.0.50727

Мне не удалось найти сборку Common.Logging.Log4Net.dll в Program Files \ Spring.NET 1.3.2 \ bin \ net \ 4.0 , поэтому я загружаю эту сборку из SourceForge :

  • Common.Среда выполнения Logging.Log4Net версии 2.0.0.0 v2.0.50727

Я настроил регистратор в app.config:



  
      
          

и попробовал следующее:

ILog log = LogManager.GetLogger("myLogger");
log.Error("hello world");

Я получил эту ошибку времени выполнения:

{"Не удалось настроить Common.Logging из раздел конфигурации 'common / logging'. "}

Внутреннее исключение:

{" Произошла ошибка при создании обработчика раздела конфигурации для common / logging: Невозможно создать тип {{ 1}} 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net' (E: \ C # PROJECTS \ STUDY \ SPRING.NET \ SpringNet.Aspects \ LoggingWithLog4Net \ bin \ Debug \ LoggingWithLog4Net.vshost.exe.Config строка 18) "}

StackTrace:

в System.Configuration.BaseConfigurationRecord.EvaluateOne (ключи String [] , ввод SectionInput, логическое значение isTrusted , FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult) в System.Configuration.BaseConfigurationRecord.Evaluate (FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg , Логическое g etRuntimeObject, Object & result, Object & resultRuntimeObject) в System.Configuration.BaseConfigurationRecord.GetSectionRecursive (String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRunleanObject requestIsHere, Object & result, Object & resultRuntimeObject) в System.Configuration.BaseConfigurationRecord.GetSectionRecursive (String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean getRuntimeObject, Boolean requestIsHere, Object & result, Object & resultRuntimeObject) в System.Configuration.BaseConfigurationRecord.GetSectionRecursive (String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object & result, Object & resultRuntimeObject) в System.Configuration.BaseConfigurationRecord. GetSection (String configKey) в System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (String sectionName) в System.Configuration. ConfigurationManager.GetSection (String sectionName) в System.Configuration.ConfigurationSettings.GetConfig (String sectionName) в Common.Logging.ConfigurationReader.GetSection (String sectionName )
в Common.Logging.LogManager.BuildLoggerFactoryAdapter ()

2-я попытка

Я думаю, проблема должна быть в версии сборки Common.Logging.Log4Net версии 2.0.0.0 времени выполнения v2 0,050727 . Потому что я использовал Common.Logging версия: 1.2.0.0, время выполнения v1.0.3705 .

Поэтому я изменил версию Common.Logging с 1.2.0.0 на 2.0.0.0. Я использовал Common.Logging из SourceForge .

И снова испытал. Я получил эту ошибку:

Невозможно создать тип 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net'

Внутреннее исключение:

{"Не удалось загрузить файл или сборку 'Common.Logging.Log4Net' или одну из его зависимостей. Система не может найти указанный файл . ":" Common.Logging.Log4Net "}

StackTrace:

в System.RuntimeTypeHandle.GetTypeByName (имя строки, логическое значение throwOnError, логическое значение ignoreCase, логическое значение ReflectionOnly, StackCrawlMarkHandle stackMark, логическое значение loadTypeFromPartialName, ObjectHandleOnStackleName} в ObjectHandleOnStackletime} тип. Имя строки, логическое значение throwOnError, логическое значение ignoreCase, логическое значение ReflectionOnly, StackCrawlMark и stackMark, логическое loadTypeFromPartialName) в System.RuntimeType.GetType (String typeNamenError throwBoolean ignoreCase, Boolean reflectionOnly, StackCrawlMark & ​​stackMark) в System.Type.GetType (String typeName, Boolean throwOnError, Boolean ignoreCase) в Common.Logging.ConfigurationSectionHandler (Xad Раздел ) в c: \ CCNet \ netcommon \ trunk \ modules \ Common.Logging \ src \ Common \ Common.Logging \ Logging \ ConfigurationSectionHandler.cs: line 130

Третья и последняя попытка

Наконец, я нашел сборку Common.Logging.Log4Net версии 1.2.0.2 в весенних примерах, поэтому я ее использовал.

  • Common.Logging.Log4Net версия 1.2.0.2
  • Common.Logging версия 1.2.0.0
  • log4Net 1.2.10.0

Протестировано и снова получена ошибка:

{"Не удалось настроить Common.Logging из раздел конфигурации 'common / logging'. "}

Внутреннее исключение:

{" Произошла ошибка при создании обработчика раздела конфигурации для common / logging: Невозможно создать тип {{ 1}} 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net' (E: \ C # PROJECTS \ STUDY \ SPRING.NET \ SpringNet.Aspects \ LoggingWithLog4Net \ bin \ Debug \ LoggingWithLog4Net.vshost.exe.Config строка 18) "}

StackTrace:

{" Невозможно создать тип 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, {{1} } Common.Logging.Log4Net '"}

Я действительно не понимаю, что я делаю плохо? Проблема с версией сборок?

6
задан Marijn 29 March 2012 в 08:06
поделиться