Я хотел бы использовать аспект ведения журнала из библиотеки аспектов Spring.NET вместе с log4Net. Я нашел эту статью , как использовать log4Net с Common Logging API.
Мое тестовое приложение является консольным и основано на клиентском профиле .NET 4.0.
Поэтому в своем проекте я ссылаюсь на следующие библиотеки:
Сборки, указанные выше, у меня из Program Files \ Spring.NET 1.3.2 \ bin \ net \ 4.0
Мне не удалось найти сборку Common.Logging.Log4Net.dll в Program Files \ Spring.NET 1.3.2 \ bin \ net \ 4.0 , поэтому я загружаю эту сборку из SourceForge :
Я настроил регистратор в 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 ()
Я думаю, проблема должна быть в версии сборки 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 из раздел конфигурации '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 '"}
Я действительно не понимаю, что я делаю плохо? Проблема с версией сборок?