{"id":66,"date":"2014-12-16T19:24:17","date_gmt":"2014-12-16T19:24:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/couchbase-net-sdk-20-development-series-logging\/"},"modified":"2014-12-16T19:24:17","modified_gmt":"2014-12-16T19:24:16","slug":"couchbase-net-sdk-20-development-series-logging","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/","title":{"rendered":"Couchbase .NET SDK 2.0 Development Series: Logging"},"content":{"rendered":"\n<p>*Note: source can be found <a href=\"https:\/\/packages.couchbase.com.s3.amazonaws.com\/clients\/net\/2.0\/dp1\/Couchbase.Net2.Examples.Configuration.zip\"><strong>here<\/strong>.<\/a><\/p>\n\n\n\n<p>While perhaps one of the more drab features of an SDK, logging and instrumentation is probably one of the most valuable in terms of finding and isolating issues and ensuring that your application is running as expected. In this post, I\u2019ll discuss how the new Couchbase SDK 2.0 handles logging, which frameworks it supports and how to get up and running with logging using the new client.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">We All Have Something in Common\u2026<\/h2>\n\n\n\n<p>We\u2019ll when we all support Apache <a href=\"https:\/\/github.com\/net-commons\/common-logging\">Common.Logging<\/a> we do! Jokes aside, the new client supports a variety of logging implementations via this common interface, so your options for a logging provider include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/logging.apache.org\/log4net\/\">Log4net<\/a><\/li>\n\n\n<li><a href=\"https:\/\/nlog-project.org\/\">NLog<\/a><\/li>\n\n\n<li><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/vstudio\/system.console\">System.Console<\/a><\/li>\n\n\n<li>Custom (roll your own)<\/li>\n\n\n<li>And <a href=\"https:\/\/netcommon.sourceforge.net\/docs\/2.1.0\/reference\/html\/ch01.html#logging-abstract\">others<\/a>\u2026<\/li>\n\n<\/ul>\n\n\n\n<p>As long as the logging implementation you chose supports the Common.Logging interface, you\u2019re good to go!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Starting<\/h2>\n\n\n\n<p>The client ships with the dependencies for Common.Logging already defined and are either included in the zip files containing the binaries or managed by Nuget packaging. \u00a0To enable logging to the default System.Console, you simply add the following configuration to your App.Config or Web.Config:<\/p>\n\n\n\n<configuration><br>\u00a0 <configsections><br>\u00a0 \u00a0 <sectiongroup name=\"common\">\u00a0 \u00a0 \u00a0 \n<section name=\"logging\" type=\"Common.Logging.ConfigurationSectionHandler, Common.Logging\"><\/section>\u00a0 \u00a0 <\/sectiongroup>\u00a0 <\/configsections>\n<p>\u00a0 <common><br>\u00a0 \u00a0 <logging><br>\u00a0 \u00a0 \u00a0 <factoryadapter type=\"Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging\"><br>\u00a0 \u00a0 \u00a0 \u00a0 <arg key=\"level\" value=\"DEBUG\"><\/arg><br>\u00a0 \u00a0 \u00a0 \u00a0 <arg key=\"showLogName\" value=\"true\"><\/arg><br>\u00a0 \u00a0 \u00a0 \u00a0 <arg key=\"showDataTime\" value=\"true\"><\/arg><br>\u00a0 \u00a0 \u00a0 \u00a0 <arg key=\"dateTimeFormat\" value=\"yyyy\/MM\/dd HH:mm:ss:fff\"><\/arg><br>\u00a0 \u00a0 \u00a0 <\/factoryadapter><br>\u00a0 \u00a0 <\/logging><br>\u00a0 <\/common><br><\/p><\/configuration>\n\n\n\n<p>In the snippet above, we first defined a new configuration section to hold the Logging.Common configuration. Then we added the configuration element and defined a factory adapter for the System.Console and a little formatting. That\u2019s it! If you run the application you will see that the all the logging information is directed to stdout.<\/p>\n\n\n\n<p>Logging to stdout is useful for Unit Test projects and the like, but our not suited for production deployments. In this case, you are better off using a factory appender like log4net or NLog and writing the results to a file or perhaps a database (hmm, what about back into Couchbase as an Operational Data Store?).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Using the Log4Net Adapter<\/h2>\n\n\n\n<p>So, that shows you how to use the default ConsoleOutLoggerFactoryAdapter to write to stdout, but what about using another logging framework like Log4Net? Well, that\u2019s pretty easy to do assuming you have referenced the dependency to Log4Net in your project:<\/p>\n\n\n\n<configuration><br>\u00a0 <configsections><br>\u00a0 \u00a0 <sectiongroup name=\"common\">\u00a0 \u00a0 \u00a0 \n<section name=\"logging\" type=\"Common.Logging.ConfigurationSectionHandler, Common.Logging\"><\/section>\u00a0 \u00a0 <\/sectiongroup>\u00a0 \u00a0 \n<section name=\"log4net\" type=\"log4net.Config.Log4NetConfigurationSectionHandler, log4net\"><\/section>\u00a0 <\/configsections>\n<p>\u00a0 <common><br>\u00a0 \u00a0 <logging><br>\u00a0 \u00a0 \u00a0 <factoryadapter type=\"Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net\"><br>\u00a0 \u00a0 \u00a0 \u00a0 <arg key=\"configType\" value=\"INLINE\"><\/arg><br>\u00a0 \u00a0 \u00a0 <\/factoryadapter><br>\u00a0 \u00a0 <\/logging><br>\u00a0 <\/common><br>\u00a0 <br>\u00a0 <log4net><br>\u00a0 \u00a0 <appender name=\"FileAppender\" type=\"log4net.Appender.FileAppender\"><br>\u00a0 \u00a0 <param name=\"File\" value=\"C:templog.txt\">\u00a0 \u00a0 <layout type=\"log4net.Layout.PatternLayout\"><br>\u00a0 \u00a0 \u00a0 <conversionpattern value=\"%date [%thread] %level %logger - %message%newline\"><\/conversionpattern><br>\u00a0 \u00a0 <\/layout><br>\u00a0 \u00a0 <\/appender><br>\u00a0 \u00a0 <root><br>\u00a0 \u00a0 \u00a0 <level value=\"INFO\"><\/level><br>\u00a0 \u00a0 \u00a0 <appender-ref ref=\"FileAppender\"><\/appender-ref><br>\u00a0 \u00a0 <\/root> <br>\u00a0 <\/log4net><br><\/p><\/configuration>\n\n\n\n<p>Here we are creating the usual Common.Logging section and configuration element and then specifying the Log4NetLoggerFactoryAdapter. We are also specifying a log4net section and configuration element for a file appender and adding the path to the file to write to. This is more like a configuration that you would use in a production environment. Note that you must have references to the following Nuget packages in your packages.config file:<\/p>\n\n\n\n<packages>\u00a0 <package id=\"Common.Logging\" version=\"2.0.0\" targetframework=\"net45\"><\/package>\u00a0 <package id=\"Common.Logging.Log4Net\" version=\"2.0.1\" targetframework=\"net45\"><\/package>\u00a0 <package id=\"log4net\" version=\"1.2.10\" targetframework=\"net45\"><\/package>\u00a0 <package id=\"Newtonsoft.Json\" version=\"6.0.1\" targetframework=\"net45\"><\/package><\/packages>\n\n\n\n<p>In most cases you\u2019re would be using Nuget to manage this file, but using this file allows you to \u201cshort cut\u201d the Nuget package manager dialog.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Quick Note about Log Levels<\/h2>\n\n\n\n<p>The client uses the following standard log levels:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trace<\/li>\n\n\n<li>Debug<\/li>\n\n\n<li>Error<\/li>\n\n\n<li>Fatal<\/li>\n\n\n<li>Warn<\/li>\n\n\n<li>Info<\/li>\n\n<\/ul>\n\n\n\n<p>In general, Debug is used throughout to trace the general execution of an operation. Info is used to trace the configuration management (cluster topology changes, etc) portion of the client and all caught (and possibly re-thrown) exceptions are logged as Error.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>*Note: source can be found here. While perhaps one of the more drab features of an SDK, logging and instrumentation is probably one of the most valuable in terms of finding and isolating issues and ensuring that your application is running as expected. In this post, I\u2019ll discuss how the new Couchbase SDK 2.0 handles [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[33],"tags":[34],"ppma_author":[32],"class_list":["post-66","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","tag-logging"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Couchbase .NET SDK 2.0 Development Series: Logging - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase .NET SDK 2.0 Development Series: Logging\" \/>\n<meta property=\"og:description\" content=\"*Note: source can be found here. While perhaps one of the more drab features of an SDK, logging and instrumentation is probably one of the most valuable in terms of finding and isolating issues and ensuring that your application is running as expected. In this post, I\u2019ll discuss how the new Couchbase SDK 2.0 handles [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:24:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Couchbase .NET SDK 2.0 Development Series: Logging\",\"datePublished\":\"2014-12-16T19:24:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/\"},\"wordCount\":521,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Logging\"],\"articleSection\":[\".NET\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/\",\"name\":\"Couchbase .NET SDK 2.0 Development Series: Logging - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:24:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/couchbase-net-sdk-20-development-series-logging\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase .NET SDK 2.0 Development Series: Logging\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/jeffrysmorris\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/author\\\/jeff-morris\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase .NET SDK 2.0 Development Series: Logging - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase .NET SDK 2.0 Development Series: Logging","og_description":"*Note: source can be found here. While perhaps one of the more drab features of an SDK, logging and instrumentation is probably one of the most valuable in terms of finding and isolating issues and ensuring that your application is running as expected. In this post, I\u2019ll discuss how the new Couchbase SDK 2.0 handles [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:24:16+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Couchbase .NET SDK 2.0 Development Series: Logging","datePublished":"2014-12-16T19:24:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/"},"wordCount":521,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","keywords":["Logging"],"articleSection":[".NET"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/","url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/","name":"Couchbase .NET SDK 2.0 Development Series: Logging - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:24:16+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-net-sdk-20-development-series-logging\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase .NET SDK 2.0 Development Series: Logging"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, Senior Software Engineer, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/jeff-morris\/"}]}},"acf":[],"authors":[{"term_id":32,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=66"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/66\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=66"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}