{"id":2856,"date":"2022-02-08T17:18:31","date_gmt":"2022-02-08T16:18:31","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=2856"},"modified":"2022-07-20T12:42:01","modified_gmt":"2022-07-20T11:42:01","slug":"using-psr3-monolog-in-mediawiki","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/","title":{"rendered":"Using PSR-3 Monolog in MediaWiki"},"content":{"rendered":"<p>Since a few years, you can use the <a href=\"https:\/\/www.php-fig.org\/psr\/psr-3\/\">PSR-3 LoggerInterface<\/a><a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Structured_logging\"> in MediaWiki to log messages<\/a>. But how can you tell MediaWiki to use a specific logger? In this technical post, we will look at how to use a Monolog logger in MediaWiki.<\/p>\n<p>If you have used <a href=\"https:\/\/seldaek.github.io\/monolog\/\">Monolog<\/a> before, you presumably know how to <a href=\"https:\/\/seldaek.github.io\/monolog\/\">create a logger<\/a> and <a href=\"https:\/\/seldaek.github.io\/monolog\/doc\/02-handlers-formatters-processors.html\">add handlers<\/a> to it. Most people configure MediaWiki logging using <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:$wgDebugLogGroups\">$wgDebugLogGroups<\/a>. This config however does not allow us to inject our (Monolog) Logger instance into MediaWiki.<\/p>\n<p>Instead, you can use <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:$wgMWLoggerDefaultSpi\">$wgMWLoggerDefaultSpi<\/a>, which specifies a service that creates the loggers MediaWiki uses. You could use the MonologSpi that MediaWiki provides. But as you can see on the <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:MonologSpi.php\">MonologSpi documentation<\/a>, the standard MediaWiki approach here might not align with your expectations. There is no way to inject your Logger instance created via the standard Monolog approach.<\/p>\n<p>We can get around this by creating our own mini Spi implementation. In this implementation, you can either create (and cache) the Logger or take an existing Logger instance. The below copy-pastable example shows how to configure MediaWiki to use an existing Logger instance.<\/p>\n<pre class=\"lang:php decode:true\">$logger = new \\Monolog\\Logger('name');\n$logger-&gt;pushHandler( new \\Monolog\\Handler\\StreamHandler( __DIR__ . '\/cache\/error.log', \\Monolog\\Logger::ERROR ) );\n\n$wgMWLoggerDefaultSpi = [\n    'factory' =&gt; function() use ( $logger ): \\MediaWiki\\Logger\\Spi {\n        return new class ( $logger ) implements \\MediaWiki\\Logger\\Spi {\n            private \\Monolog\\Logger $logger;\n\n            public function __construct( \\Monolog\\Logger $logger ) {\n                $this-&gt;logger = $logger;\n            }\n\n            public function getLogger( $channel ) {\n                return $this-&gt;logger-&gt;withName( $channel );\n            }\n        };\n    }\n];<\/pre>\n<p>Since you construct the Logger yourself, you can configure it as you like, with all the tools available in the Monolog ecosystem.<\/p>\n<p>The above example uses PHP 7.4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since a few years, you can use the PSR-3 LoggerInterface in MediaWiki to log messages. But how can you tell&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[465,156,323],"class_list":["post-2856","post","type-post","status-publish","format-standard","hentry","category-programming","tag-logging","tag-mediawiki","tag-psr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using PSR-3 Monolog in MediaWiki - Blog of Jeroen De Dauw<\/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.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using PSR-3 Monolog in MediaWiki - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"Since a few years, you can use the PSR-3 LoggerInterface in MediaWiki to log messages. But how can you tell&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-08T16:18:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-20T11:42:01+00:00\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"Using PSR-3 Monolog in MediaWiki\",\"datePublished\":\"2022-02-08T16:18:31+00:00\",\"dateModified\":\"2022-07-20T11:42:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\"},\"wordCount\":217,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"keywords\":[\"Logging\",\"MediaWiki\",\"PSR\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\",\"name\":\"Using PSR-3 Monolog in MediaWiki - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\"},\"datePublished\":\"2022-02-08T16:18:31+00:00\",\"dateModified\":\"2022-07-20T11:42:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.entropywins.wtf\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using PSR-3 Monolog in MediaWiki\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeroendedauw\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using PSR-3 Monolog in MediaWiki - Blog of Jeroen De Dauw","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.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/","og_locale":"en_US","og_type":"article","og_title":"Using PSR-3 Monolog in MediaWiki - Blog of Jeroen De Dauw","og_description":"Since a few years, you can use the PSR-3 LoggerInterface in MediaWiki to log messages. But how can you tell&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2022-02-08T16:18:31+00:00","article_modified_time":"2022-07-20T11:42:01+00:00","author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"Using PSR-3 Monolog in MediaWiki","datePublished":"2022-02-08T16:18:31+00:00","dateModified":"2022-07-20T11:42:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/"},"wordCount":217,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"keywords":["Logging","MediaWiki","PSR"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/","url":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/","name":"Using PSR-3 Monolog in MediaWiki - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"datePublished":"2022-02-08T16:18:31+00:00","dateModified":"2022-07-20T11:42:01+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2022\/02\/08\/using-psr3-monolog-in-mediawiki\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"Using PSR-3 Monolog in MediaWiki"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-K4","jetpack-related-posts":[{"id":1129,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/07\/23\/profiling-and-logging-in-mediawiki\/","url_meta":{"origin":2856,"position":0},"title":"Profiling and logging in MediaWiki","author":"Jeroen","date":"2013-07-23","format":false,"excerpt":"In this post I first describe the current approaches taken to logging and profiling in MediaWiki, then outline why these are problematic, and finish with a few thoughts on how things can be improved. The problems encountered and solutions proposed are not MediaWiki specific and can be apply to similar\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1160,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/28\/my-adventures-with-autoloading-in-php\/","url_meta":{"origin":2856,"position":1},"title":"My adventures with autoloading in PHP","author":"Jeroen","date":"2013-11-28","format":false,"excerpt":"This post has as audience developers and will provide readers with insights on how to cleanly autoload classes in PHP. For a long long time, I\u2019ve been one of those MediaWiki developers that just added classes and file names to $wgAutoloadClasses, without really knowing how this made class loading work\u2026","rel":"","context":"In \"Autoloading\"","block_context":{"text":"Autoloading","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/autoloading\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1169,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/12\/31\/php-framework-interoperability-group\/","url_meta":{"origin":2856,"position":2},"title":"PHP Framework Interoperability Group","author":"Jeroen","date":"2013-12-31","format":false,"excerpt":"Those who have worked with me in recent history know that I\u2019m rather passionate about reuse and interoperability. Holding that in mind it should not come as a surprise that I\u2019m very happy to announce Wikidata and Semantic MediaWiki are now represented on PHP FIG. PHP FIG stands for \u201cPHP\u2026","rel":"","context":"In \"Interoperability\"","block_context":{"text":"Interoperability","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/interoperability\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1172,"url":"https:\/\/www.entropywins.wtf\/blog\/2014\/01\/02\/mediawiki-extensions-to-define-their-mediawiki-compatibility\/","url_meta":{"origin":2856,"position":3},"title":"MediaWiki extensions to define their MediaWiki compatibility","author":"Jeroen","date":"2014-01-02","format":false,"excerpt":"Over the past year support for real dependency management has been gradually added to MediaWiki and selected extensions. This support being based on the Composer software. While extensions have been able to specify their dependencies for a while, such as PHP libraries and other extensions, they where not able to\u2026","rel":"","context":"In \"composer\"","block_context":{"text":"composer","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/composer\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2941,"url":"https:\/\/www.entropywins.wtf\/blog\/2025\/08\/20\/why-you-should-use-mediawiki-lts-versions\/","url_meta":{"origin":2856,"position":4},"title":"Why You Should Skip MediaWiki 1.44","author":"Jeroen","date":"2025-08-20","format":false,"excerpt":"Or: Why you should stop worrying and love the LTS releases. TL;DR: Stick to MediaWiki 1.43 LTS, avoid MediaWiki 1.44, 1.45, and 1.46. There are two major MediaWiki releases every year, and every fourth such release gets Long Term Support (LTS). Two consistent approaches to upgrading MediaWiki are to upgrade\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2025\/08\/MediaWikiLTS.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2025\/08\/MediaWikiLTS.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2025\/08\/MediaWikiLTS.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2025\/08\/MediaWikiLTS.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2025\/08\/MediaWikiLTS.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2025\/08\/MediaWikiLTS.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1153,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/11\/24\/introduction-to-composer-for-mediawiki-developers\/","url_meta":{"origin":2856,"position":5},"title":"Introduction to Composer for MediaWiki developers","author":"Jeroen","date":"2013-11-24","format":false,"excerpt":"This post aims to be a quick start guide for MediaWiki extension developers that want to get their extension to be installable via Composer. If you are not yet familiar with Composer, I recommend you have a look at the Composer page on MediaWiki.org before continuing with this post. Defining\u2026","rel":"","context":"In \"composer\"","block_context":{"text":"composer","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/composer\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2013\/11\/logo-composer-transparent.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/2856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=2856"}],"version-history":[{"count":4,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/2856\/revisions"}],"predecessor-version":[{"id":2872,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/2856\/revisions\/2872"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=2856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=2856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=2856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}