{"id":251,"date":"2021-05-03T00:01:16","date_gmt":"2021-05-03T00:01:16","guid":{"rendered":"https:\/\/www.escueladefrikis.com\/?p=251"},"modified":"2021-05-03T00:01:16","modified_gmt":"2021-05-03T00:01:16","slug":"trazas-o-logging-customizado-en-laravel-8","status":"publish","type":"post","link":"https:\/\/escueladefrikis.com\/index.php\/2021\/05\/03\/trazas-o-logging-customizado-en-laravel-8\/","title":{"rendered":"Trazas o logging customizado en Laravel 8"},"content":{"rendered":"\n<p>Sigo trasteando con <a href=\"https:\/\/laravel.com\/\">Laravel 8<\/a> para un nuevo proyecto que he arrancado con dos amigos y una las cosas m\u00e1s curiosas es c\u00f3mo organiza la gesti\u00f3n de los logs. Las trazas son b\u00e1sicas para saber qu\u00e9 est\u00e1 pasando con una aplicaci\u00f3n, sobretodo cuando te encuentras con alg\u00fan comportamiento inesperado o un problema como ya expliqu\u00e9 en un <a href=\"https:\/\/www.escueladefrikis.com\/2018\/01\/20\/buenas-practicas-programacion-comentarios-trazas\/\">art\u00edculo anterior<\/a>.<\/p>\n<p>Laravel utiliza Monolog (ver c\u00f3digo fuente en <a href=\"https:\/\/github.com\/Seldaek\/monolog\">GitHub<\/a>) para el formateo de los logs y el formato por defecto ser\u00eda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>storage\/logs\/laravel.log\n\n&#91;2020-12-28 00:09:59] local.INFO: mi traza de log<\/code><\/pre>\n\n\n\n<p>En mi caso, busco:<\/p>\n<ul>\n<li>Una traza que incluya los milisegundos, ya que quiero saber en qu\u00e9 parte del procesamiento se pierde m\u00e1s tiempo<\/li>\n<li>No me interesa el nombre del canal (en este caso, \u201clocal.INFO\u201d)<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p>Para modificar el formato, en la configuraci\u00f3n de logging de Laravel dispones de multitud de canales pero el canal por defecto es \u00absingle\u00bb.<\/p>\n<p>Por tanto, lo m\u00e1s sencillo es modificar el canal \u201csingle\u201d, y configurarlo adecuadamente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>config\/logging.php\n\n        'single' =&gt; &#91;\n            'driver' =&gt; 'single',\n            'path' =&gt; storage_path('logs\/laravel.log'),\n            'level' =&gt; 'debug',\n            'formatter' =&gt; Monolog\\Formatter\\LineFormatter::class,\n            'formatter_with' =&gt; &#91;\n                'format' =&gt; \"&#91;%datetime%] %message%\\n\",\n                'dateFormat' =&gt; 'Y-m-d H:i:s.v',\n            ],\n        ],<\/code><\/pre>\n\n\n\n<p>Para el formato de la fecha y hora se utilizan los caracteres de formato est\u00e1ndar de PHP (ver <a href=\"https:\/\/www.php.net\/manual\/en\/datetime.format.php\">referencia<\/a>).<\/p>\n<p>Con esta configuraci\u00f3n, a partir de ahora puedes utilizar en cualquier clase:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nuse Illuminate\\Support\\Facades\\Log;\nclass ExampleClass {\n  public function hello() {\n    Log::info('Hello function executed!');\n  }\n}<\/code><\/pre>\n\n\n\n<p>Y en las trazas se mostrar\u00e1n con el siguiente formato:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>storage\/logs\/laravel.log\n\n&#91;2021-04-21 21:45:19.787] Hello function executed!<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,5],"tags":[22,24,25],"class_list":["post-251","post","type-post","status-publish","format-standard","hentry","category-laravel-8","category-programacion","tag-laravel","tag-logging","tag-php"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts\/251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/comments?post=251"}],"version-history":[{"count":0,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts\/251\/revisions"}],"wp:attachment":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/media?parent=251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/categories?post=251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/tags?post=251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}