Примечание куратора: содержание этой статьи было изначально написано Джоном Заблоки в блоге Couchbase .
Клиентская библиотека .NET предоставляет подробную информацию об ошибках через интерфейс IOperationResult . Чтобы выяснить, почему операция хранилища не удалась, используйте ExecuteStore вместо Store .
var result = client.ExecuteStore(StoreMode.Add, "key", "value"); if (! result.Success) { Console.WriteLine("Operation failed with message {0} and status code {1}", result.Message, result.StatusCode); }
Несмотря на то, что
возвращаемое значение IOperationResult предоставляет коды состояния, перехваченные исключения и сообщения об ошибках, существуют ситуации, когда
для диагностики постоянной проблемы требуется подробное ведение журнала .
В последней версии 1.2.2 .NET Client Library для Couchbase сборки журналов включены по умолчанию как в пакет Nuget, так и в ZIP с последними двоичными файлами . Из коробки Couchbase (и его зависимость Enyim.Caching) поддерживает log4net и протоколирование NLog.
Включить регистрацию с помощью Couchbase довольно просто, но вам нужно знать основы настройки log4net или NLog, чтобы начать работу. Если вы только начинаете работать с Couchbase и ASP.NET, было бы полезно увидеть подробности регистрации без необходимости изучать другую среду, даже если она минимальна. К счастью, если вы используете инструмент диагностики Glimpse в своем приложении ASP.NET, вы можете довольно легко включить ведение журнала.
Если вы не знакомы с Glimpse, общая аналогия — «Firebug for ASP.NET». После того, как вы установите пакет NuGet для Glimpse и включите платформу, в вашем приложении появится диагностическое окно, которое предоставляет вам представление о том, как запрос был выполнен на сервере. Вы можете просмотреть настройки web.config, сведения о среде, маршруты, переменные сервера и некоторые другие аспекты выполняемого вами веб-приложения.
Ник и Энтони, которые создали проект Glimpse с открытым исходным кодом (теперь поддерживается Redgate), создали мощную модель расширяемости. Подключиться к пользовательскому интерфейсу Glimpse для предоставления инструментария для библиотеки так же просто, как реализовать интерфейс ITab (или расширить TabBase ).
Зависимость Enyim.Caching в клиенте Couchbase определяет интерфейсы ILog и ILogFactory , которые при реализации могут быть использованы для предоставления настраиваемого поставщика журналов для сбора подробностей инструментария Couchbase. Для моего нового проекта CouchbaseLabs Couchbase.Glimpse я создал новый регистратор, который будет регистрировать журналы по запросу и отправлять вывод в Glimpse.
Для начала установите и включите Glimpse . После этого установите расширение CouchbaseGlimpse . Пакет NuGet добавит необходимую для вас конфигурацию. Вы также можете получить исходники из GitHub . Если вы идете по пути исходного кода, вам нужно будет включить раздел конфигурации ниже.
<configuration> <configSections> <sectionGroup name="enyim.com"> <section name="log" type="Enyim.Caching.Configuration.LoggerSection, Enyim.Caching" /> </sectionGroup> ... </configSections> <enyim.com> <log factory="Couchbase.Glimpse.Logging.GlimpseLogFactory, Couchbase.Glimpse" /> </enyim.com> </configuration>
Вам нужно включить ведение журнала, чтобы начать сбор данных с клиента. Где-то в вашем приложении, возможно, Application_Start, вам нужно вызвать метод Configure в GlimpseLogger .
var config = new GlimpseLogConfiguration { IsDebugEnabled = true }; GlimpseLogger.Configure(config);
Уровни ведения журнала являются кумулятивными, поэтому включение отладки включает все остальные уровни. Вы также можете захватить определенные регистраторы (журналы на класс), добавив имена журналов в белый список. Приведенная ниже конфигурация будет выводить журналы, происходящие только из классов PooledSocket и ConfigHelper .
var config = new GlimpseLogConfiguration { IsDebugEnabled = true }; config.SourceWhiteList.AddRange(new[] { "PooledSocket", "ConfigHelper" }); GlimpseLogger.Configure(config);
Как только вы построите свое приложение для включения новой вкладки Couchbase в Glimpse, перейдите на страницу, где используется клиент Couchbase. Вы должны увидеть нечто похожее на снимок экрана ниже.
Вы обнаружите, что когда клиент впервые загружается, он немного болтает с журналами отладки. Однако, если у вас возникли проблемы с подключением к вашему кластеру, возможно, вам доступна ценная информация, включая конфигурацию кластера (которую вы можете увидеть как JSON на снимке экрана выше).
GlimpseLogger не сохраняет свои журналы, поэтому, если вам нужно собирать диагностическую информацию вне запроса, вам нужно использовать log4net или NLog.
Репо GitHub содержит копию образца приложения .NET пива с Glimpse включена. Клонируйте репозиторий и запустите приложение, чтобы быстро понять, как работает плагин.