{"id":4454,"date":"2018-01-17T17:38:30","date_gmt":"2018-01-18T01:38:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4454"},"modified":"2025-06-13T19:28:27","modified_gmt":"2025-06-14T02:28:27","slug":"controlling-hierarchical-logging-slf4j-logback","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/","title":{"rendered":"Controlling Hierarchical Logging with SLF4J and Logback"},"content":{"rendered":"<div class=\"paragraph\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4459 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/SLF4J_Logo.jpg\" alt=\"\" width=\"305\" height=\"130\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/SLF4J_Logo.jpg 305w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/SLF4J_Logo-300x128.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/SLF4J_Logo-20x9.jpg 20w\" sizes=\"auto, (max-width: 305px) 100vw, 305px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4458 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/01\/lblogo.jpg\" alt=\"\" width=\"260\" height=\"140\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg 260w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo-20x11.jpg 20w\" sizes=\"auto, (max-width: 260px) 100vw, 260px\" \/><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/products\/server\/\">Couchbase Server<\/a> is a complex product. Like most substantive software, and especially enterprise products, monitoring behavior through logging is important.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>I recently wrote a small sample application using the Couchbase Multi-Cluster Aware Java client. This client can handle fail over of a Couchbase node, seemlessly passing load over to a <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/ha-dr\/ha-dr-intro.html\">completely different cluster<\/a> (very cool stuff). (If you want to hear more about these capabilities, and see a live demo, check out our webinar entitled &#8220;How to Switch From Oracle to the World\u2019s First Engagement Database &#8221; via the <a href=\"https:\/\/www.couchbase.com\/resources\/\">resources<\/a> page.)<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_switching_loggers\">Switching loggers<\/h3>\n<div class=\"paragraph\">\n<p>Couchbase uses <a href=\"https:\/\/www.slf4j.org\/\">SLF4J<\/a> under the hood for logging. SLF4J can automatically wrap and work with various frameworks, including the standard Java <a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/logging\/index.html\">java.util.logging<\/a> classes, <a href=\"https:\/\/logging.apache.org\/log4j\/2.x\/\">log4j<\/a>, and <a href=\"https:\/\/logback.qos.ch\/\">logback<\/a>. Logback was written to replace log4j, and is the most powerful of the three, so I wanted to use that.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Turns out it\u2019s quite easy. For maven, just add the following dependency to your <code>pom<\/code> file. This will pull in <code>slf4j-api<\/code> as a subdependency.<\/p>\n<pre class=\"lang:default decode:true\">&lt;!-- https:\/\/mvnrepository.com\/artifact\/ch.qos.logback\/logback-classic --&gt;\r\n&lt;dependency&gt;\r\n  &lt;groupId&gt;ch.qos.logback&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;logback-classic&lt;\/artifactId&gt;\r\n  &lt;version&gt;1.2.3&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n<\/pre>\n<\/div>\n<div class=\"paragraph\">\n<p>Sure enough, just by adding this, while I was getting output via standard Java logging before, I now get logging through logback. The logging was really noisy, though. I wanted to hone in on issues around network connectivity specifically, but the information was getting buried in other output.<\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_tuning_the_output\">Tuning the output<\/h3>\n<div class=\"paragraph\">\n<p>One cool feature of logback is its ability to control output hierarchically. I read about this in the docs, but didn\u2019t find any good examples.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Assuming you create loggers based on class names, here\u2019s a simple logback configuration file that tunes down the Couchbase Server logging in general, and turns it off for a specific class.<\/p>\n<pre class=\"lang:default decode:true\">&lt;configuration&gt;\r\n    &lt;appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\"&gt;\r\n        &lt;encoder&gt;\r\n            &lt;pattern&gt;%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n&lt;\/pattern&gt;\r\n        &lt;\/encoder&gt;\r\n    &lt;\/appender&gt;\r\n    &lt;root level=\"warn\"&gt;\r\n        &lt;appender-ref ref=\"STDOUT\" \/&gt;\r\n    &lt;\/root&gt;\r\n    &lt;logger level=\"off\" name=\"com.couchbase.client.core.endpoint.Endpoint\" \/&gt;\r\n    &lt;logger level=\"error\" name=\"com.couchbase.client.core.env.CoreEnvironment\" \/&gt;\r\n&lt;\/configuration&gt;<\/pre>\n<\/div>\n<div class=\"paragraph\">\n<p>The last two <code>logger<\/code> lines show the hierarchy in action. The first line sets everything in the Couchbase code to log only on &#8220;error&#8221; or higher priority from the default of &#8220;warn&#8221;. This would control the <code>Endpoint<\/code> class output as well. Instead, the second line turns off logging entirely for just that class.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>That\u2019s it. You can read more about how to configure logback in the documentation on the project site. That snippet of configuration will give you a good place to begin in tuning your <a href=\"https:\/\/www.couchbase.com\/nosql-databases\/couchbase-server?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase Server<\/a> Java client code\u2019s output if you\u2019re looking for a quick start.<\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_postscript\">Postscript<\/h3>\n<div class=\"paragraph\">\n<p>Couchbase is open source and free to try out. Download the latest versions, including previews of upcoming features, <a href=\"https:\/\/www.couchbase.com\/downloads\/\">here<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Find more resources on our <a href=\"https:\/\/www.couchbase.com\/developers\/community\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">developer portal<\/a> and follow us on Twitter <a href=\"https:\/\/twitter.com\/CouchbaseDev\">@CouchbaseDev<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>You can post questions on our <a href=\"https:\/\/www.couchbase.com\/forums\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">forums<\/a>. And we actively participate on <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">Stack Overflow<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Hit me up on Twitter with any questions, comments, topics you\u2019d like to see, etc. <a href=\"https:\/\/twitter.com\/HodGreeley\">@HodGreeley<\/a><\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<div class=\"paragraph\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Server is a complex product. Like most substantive software, and especially enterprise products, monitoring behavior through logging is important. I recently wrote a small sample application using the Couchbase Multi-Cluster Aware Java client. This client can handle fail over [&hellip;]<\/p>\n","protected":false},"author":73,"featured_media":4458,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1818],"tags":[],"ppma_author":[9042],"class_list":["post-4454","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-java"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Controlling Hierarchical Logging with SLF4J and Logback<\/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\/controlling-hierarchical-logging-slf4j-logback\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Controlling Hierarchical Logging with SLF4J and Logback\" \/>\n<meta property=\"og:description\" content=\"Couchbase Server is a complex product. Like most substantive software, and especially enterprise products, monitoring behavior through logging is important. I recently wrote a small sample application using the Couchbase Multi-Cluster Aware Java client. This client can handle fail over [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-18T01:38:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:28:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"260\" \/>\n\t<meta property=\"og:image:height\" content=\"140\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@HodGreeley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/\"},\"author\":{\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4\"},\"headline\":\"Controlling Hierarchical Logging with SLF4J and Logback\",\"datePublished\":\"2018-01-18T01:38:30+00:00\",\"dateModified\":\"2025-06-14T02:28:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/\"},\"wordCount\":449,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg\",\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/\",\"name\":\"Controlling Hierarchical Logging with SLF4J and Logback\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg\",\"datePublished\":\"2018-01-18T01:38:30+00:00\",\"dateModified\":\"2025-06-14T02:28:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg\",\"width\":260,\"height\":140},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Controlling Hierarchical Logging with SLF4J and Logback\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4\",\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/21eb69cb5d4a401fb23b149e4f4e9e87\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"caption\":\"Hod Greeley, Developer Advocate, Couchbase\"},\"description\":\"Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University.\",\"sameAs\":[\"https:\/\/hod.greeley.org\/blog\",\"https:\/\/x.com\/HodGreeley\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/hod-greeley\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Controlling Hierarchical Logging with SLF4J and Logback","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\/controlling-hierarchical-logging-slf4j-logback\/","og_locale":"en_US","og_type":"article","og_title":"Controlling Hierarchical Logging with SLF4J and Logback","og_description":"Couchbase Server is a complex product. Like most substantive software, and especially enterprise products, monitoring behavior through logging is important. I recently wrote a small sample application using the Couchbase Multi-Cluster Aware Java client. This client can handle fail over [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-01-18T01:38:30+00:00","article_modified_time":"2025-06-14T02:28:27+00:00","og_image":[{"width":260,"height":140,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg","type":"image\/jpeg"}],"author":"Hod Greeley, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@HodGreeley","twitter_misc":{"Written by":"Hod Greeley, Developer Advocate, Couchbase","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/"},"author":{"name":"Hod Greeley, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4"},"headline":"Controlling Hierarchical Logging with SLF4J and Logback","datePublished":"2018-01-18T01:38:30+00:00","dateModified":"2025-06-14T02:28:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/"},"wordCount":449,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg","articleSection":["Best Practices and Tutorials","Couchbase Server","Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/","url":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/","name":"Controlling Hierarchical Logging with SLF4J and Logback","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg","datePublished":"2018-01-18T01:38:30+00:00","dateModified":"2025-06-14T02:28:27+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/lblogo.jpg","width":260,"height":140},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/controlling-hierarchical-logging-slf4j-logback\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Controlling Hierarchical Logging with SLF4J and Logback"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4","name":"Hod Greeley, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/21eb69cb5d4a401fb23b149e4f4e9e87","url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","caption":"Hod Greeley, Developer Advocate, Couchbase"},"description":"Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University.","sameAs":["https:\/\/hod.greeley.org\/blog","https:\/\/x.com\/HodGreeley"],"url":"https:\/\/www.couchbase.com\/blog\/author\/hod-greeley\/"}]}},"authors":[{"term_id":9042,"user_id":73,"is_guest":0,"slug":"hod-greeley","display_name":"Hod Greeley, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","author_category":"","last_name":"Greeley","first_name":"Hod","job_title":"","user_url":"https:\/\/hod.greeley.org\/blog","description":"Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4454"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4454\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/4458"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4454"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}