{"id":230334,"date":"2022-12-08T10:02:00","date_gmt":"2022-12-08T07:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230334"},"modified":"2022-12-08T10:02:18","modified_gmt":"2022-12-08T07:02:18","slug":"skriva-meddelanden-till-wordpress-debug-log","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/skriva-meddelanden-till-wordpress-debug-log\/","title":{"rendered":"Skriva meddelanden till WordPress Debug Log"},"content":{"rendered":"\n<p>N\u00e4r jag arbetar med ett projekt har jag ofta WordPress inst\u00e4llt i <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/inbyggda-wordpress-felsoekningsverktyg-som-inte-kraever-en-ide\/\" title=\"fels\u00f6kningsl\u00e4ge\">fels\u00f6kningsl\u00e4ge<\/a><\/strong> och jag gillar att skriva meddelanden till felloggen som jag enkelt kan se, sp\u00e5ra och f\u00f6lja n\u00e4r jag arbetar med ett projekt.<\/p>\n<p>N\u00e4r jag g\u00f6r detta finns det tv\u00e5 s\u00e4tt (och det beror bara p\u00e5 projektet):<\/p>\n<ul>\n<li>Jag kommer att anv\u00e4nda ett bibliotek som <strong><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a><\/strong> ,<\/li>\n<li>Jag kommer att anv\u00e4nda min egen enkla loggfunktion.<\/li>\n<\/ul>\n<p>I det h\u00e4r inl\u00e4gget ska jag ta upp det senare. Det vill s\u00e4ga, jag ska dela med mig av hur jag skriver meddelanden till WordPress fels\u00f6kningsloggen och sedan n\u00e5gra av de saker du kan beh\u00f6va vara uppm\u00e4rksam p\u00e5 n\u00e4r du g\u00f6r detsamma.<\/p>\n<h2>WordPress fels\u00f6kningslogg<\/h2>\n<p>F\u00f6rst \u00e4r det viktigt att notera att funktionen jag ska dela \u00e4r vanligtvis i en basklass.<\/p>\n<p>L\u00e5t oss s\u00e4ga att jag har en <strong>AbstractSubscriber<\/strong> som alla mina prenumeranter implementerar (som en <strong>ScriptAssetSubscriber<\/strong> f\u00f6r att registrera och k\u00f6a JavaScript-fil).<\/p>\n<p>AbstractSubscriber kommer att inkludera denna funktion s\u00e5 att den kan anropas av alla barnklasser<strong>.<\/strong> <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/d8bed85851dad283183d84a819dd6c9a#file-00-log-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Funktionen \u00e4r ganska enkel:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Prints a message to the debug file that can easily be called by any subclass.\n *\n * @param mixed $message      an object, array, string, number, or other data to write to the debug log\n * @param bool  $shouldNotDie whether or not the The function should exit after writing to the log\n *\n *\/\nprotected function log($message, $shouldNotDie = true)\n{\n    error_log(print_r($message, true));\n    if ($shouldNotDie) {\n        exit;\n    }\n}<\/code><\/pre>\n<p>Men det finns flera saker med den h\u00e4r funktionen som kan bryta mot en princip eller utl\u00f6sa fel i kodkvalitetsverktyg.<\/p>\n<h3>Valfria booleska argument<\/h3>\n<p>N\u00e4rhelst en funktion accepterar ett valfritt booleskt argument, kan det indikera att en funktion har mer \u00e4n ett ansvar (och d\u00e4rmed bryter mot <a href=\"https:\/\/en.wikipedia.org\/wiki\/Single_responsibility_principle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">principen om ett enda ansvar<\/a> ).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73cdb388b5.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73cdb388b5.png\" alt=\"Skriva meddelanden till WordPress Debug Log\"><\/a><\/p>\n<p>Anledningen till att detta skulle bryta mot n\u00e4mnda princip \u00e4r att det ger en modul mer \u00e4n en anledning att byta.<\/p>\n<p>Jag \u00e4r bekv\u00e4m med att till\u00e5ta detta att skrivas p\u00e5 det h\u00e4r s\u00e4ttet eftersom jag anv\u00e4nder det f\u00f6r fels\u00f6kning, inte f\u00f6r produktionsmilj\u00f6er, och f\u00f6r att det finns tillf\u00e4llen d\u00e5 jag kanske vill stoppa k\u00f6rningen, och det finns tillf\u00e4llen jag inte g\u00f6r det.<\/p>\n<p>Och visst, jag skulle kunna skriva tv\u00e5 separata funktioner, men om det h\u00e4r \u00e4r den enda funktionen som g\u00f6r detta, \u00e4r jag okej med det.<\/p>\n<h3>Uttalanden om f\u00f6rbjudna uttr\u00e4den<\/h3>\n<p>Andra kodkvalitetsverktyg ogillar <strong>exit<\/strong> &#8211; satsen (och p\u00e5 samma s\u00e4tt ogillar de <strong>die-<\/strong> satsen). Och det \u00e4r f\u00f6rst\u00e5eligt: \u200b\u200bDe stoppar vanligtvis programmet helt n\u00e4r vi borde g\u00f6ra ett undantag, returnera ett v\u00e4rde eller i allm\u00e4nhet g\u00f6ra n\u00e5got f\u00f6r att hantera situationen p\u00e5 ett graci\u00f6st s\u00e4tt.<\/p>\n<p>Men igen, eftersom det i den h\u00e4r funktionen finns tillf\u00e4llen d\u00e5 jag vill stoppa exekveringen, \u00e4r jag okej att hantera konsekvenserna av att ha kodraden i funktionen.<\/p>\n<p>Alternativt kan jag anv\u00e4nda <strong>wp_die(),<\/strong> och de flesta kodkvalitetsverktyg skulle f\u00f6rmodligen inte f\u00e5nga det, men det maskerar huvudproblemet. Om n\u00e5got, kanske det \u00e4r b\u00e4st att bara undertrycka varningen genom att anv\u00e4nda det direktiv som din valfria sniffer till\u00e5ter.<\/p>\n<h2>Oavsett, logga meddelandet<\/h2>\n<p>Ytterst \u00e4r syftet med funktionen ovan att tillhandah\u00e5lla ett enkelt s\u00e4tt att skriva till WordPress fels\u00f6kningsloggen och eventuellt stoppa k\u00f6rningen av programmet n\u00e4r du g\u00f6r det.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73ce108d1e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73ce108d1e.png\" alt=\"Skriva meddelanden till WordPress Debug Log\"><\/a><\/p>\n<p>Det \u00e4r uppenbarligen inte problemfritt, och det finns bibliotek av h\u00f6gre kvalitet som finns tillg\u00e4ngliga, men ibland beh\u00f6ver du inte en sl\u00e4gga f\u00f6r en problemh\u00e4ftstift.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>H\u00e4r \u00e4r en enkel funktion f\u00f6r att skriva till WordPress fels\u00f6kningsloggen (det \u00e4r inte utan n\u00e5gra varningar). Jag brukar anv\u00e4nda det i lokal kod n\u00e4r jag arbetar med abstrakta klasser.<\/p>\n","protected":false},"author":1,"featured_media":235343,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,807,868],"tags":[1173],"class_list":["post-230334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-php-9","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=230334"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230334\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235343"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}