{"id":1057,"date":"2018-10-16T01:00:48","date_gmt":"2018-10-16T04:00:48","guid":{"rendered":"https:\/\/magenteiro.com\/blog\/?p=1057"},"modified":"2022-08-22T21:24:35","modified_gmt":"2022-08-23T00:24:35","slug":"log-personalizado-no-magento-2","status":"publish","type":"post","link":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/","title":{"rendered":"Gravando arquivo de log personalizado no Magento 2"},"content":{"rendered":"\n<p>Este \u00e9 o segundo e \u00faltimo artigo da <a href=\"https:\/\/magenteiro.com\/blog\/tag\/series-log-magento-2\/\"><strong>s\u00e9rie sobre Logs no Magento 2<\/strong><\/a>. No primeiro artigo, vimos <a href=\"https:\/\/magenteiro.com\/blog\/magento-2\/logs-no-magento-2-como-funciona\/\">como usar o sistema de log no Magento 2 e como ele funciona<\/a>.<\/p>\n\n\n\n<p>Neste artigo veremos como gerar arquivos personalizados e estender a classe de log do Magento 2. Caso esteja interessado em Magento 1, veja este outro artigo sobre <a href=\"https:\/\/magenteiro.com\/blog\/magento-1\/magelog-como-criar-arquivo-log\/\">como gravar logs no Magento 1<\/a>.<\/p>\n\n\n\n<h1 id=\"h-conhecendo-os-handlers-de-log-nativos-do-magento-2\">Conhecendo os <em>handlers<\/em> de log nativos do Magento 2<\/h1>\n\n\n\n<p>Como vimos no <a href=\"https:\/\/magenteiro.com\/blog\/magento-2\/logs-no-magento-2-como-funciona\/\">artigo anterior<\/a>, o Magento&nbsp; faz uso da conhecida classe Monolog, e implementa 3 <em>handlers<\/em> nativos:<\/p>\n\n\n\n<ul><li>System &#8211; \\Magento\\Framework\\Logger\\Handler\\System<\/li><li>Exception &#8211; \\Magento\\Framework\\Logger\\Handler\\Exception<\/li><li>Debug &#8211; \\Magento\\Framework\\Logger\\Handler\\Debug<\/li><\/ul>\n\n\n\n<p>Todos eles estendem a classe <code>\\Magento\\Framework\\Logger\\Handler\\Base<\/code>, que ent\u00e3o estende a classe <code>\\Monolog\\Handler\\StreamHandler<\/code> &#8211; usada para gravar qualquer tipo de log em um formato do tipo <em>stream <\/em>(ex: arquivo local, arquivo remoto, php:\/\/stderr, etc).<\/p>\n\n\n\n<p>Cada classe define um arquivo de sa\u00edda e um n\u00edvel de criticidade do log que ela representa, seguindo os padr\u00f5es da RFC que vimos no <a href=\"http:\/\/entend\">artigo anterior<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?php\nnamespace Magento\\Framework\\Logger\\Handler;\n\nuse Monolog\\Logger;\n\nclass Debug extends Base\n{\n    \/**\n     * @var string\n     *\/\n    protected $fileName = '\/var\/log\/debug.log';\n\n    \/**\n     * @var int\n     *\/\n    protected $loggerType = Logger::DEBUG;\n}\n<\/pre>\n\n\n\n<h2 id=\"h-o-base-handler\">O <em>Base Handler<\/em><\/h2>\n\n\n\n<p>A classe Base \u00e9 a respons\u00e1vel por criar o arquivo especificado em <code>$fileName<\/code>, e tamb\u00e9m por gravar as informa\u00e7\u00f5es nele e tratar o nome do arquivo antes de cri\u00e1-lo.<\/p>\n\n\n\n<p>Veja s\u00f3 como ela \u00e9 definida no <code>di.xml<\/code> do m\u00f3dulo base do Magento:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ ...\n&lt;type name=\"Magento\\Framework\\Logger\\Monolog\"&gt;\n        &lt;arguments&gt;\n            &lt;argument name=\"name\" xsi:type=\"string\"&gt;main&lt;\/argument&gt;\n            &lt;argument name=\"handlers\"  xsi:type=\"array\"&gt;\n                &lt;item name=\"system\" xsi:type=\"object\"&gt;Magento\\Framework\\Logger\\Handler\\System&lt;\/item&gt;\n                &lt;item name=\"debug\" xsi:type=\"object\"&gt;Magento\\Framework\\Logger\\Handler\\Debug&lt;\/item&gt;\n            &lt;\/argument&gt;\n        &lt;\/arguments&gt;\n    &lt;\/type&gt;\n\/\/ ...<\/pre>\n\n\n\n<p>\u00c9 l\u00e1 que s\u00e3o definidos os <em>handlers<\/em> dispon\u00edveis &#8211; e eventualmente onde podemos adicionar um novo handler.<\/p>\n\n\n\n<p>Veja que o <code>\\Magento\\Framework\\Logger\\Handler\\Exception<\/code> n\u00e3o est\u00e1 listado. Ele \u00e9 chamado pelo <code>\\Magento\\Framework\\Logger\\Handler\\System<\/code>.<\/p>\n\n\n\n<h2 id=\"h-adicionando-um-handler-de-log-no-magento-2\">Adicionando um <em>Handler<\/em> de log no Magento 2<\/h2>\n\n\n\n<p>Voc\u00ea pode adicionar um <em>Handler<\/em> para fazer algo espec\u00edfico com as informa\u00e7\u00f5es de log de um determinado tipo.&nbsp; No exemplo abaixo, criaremos uma classe para salvar as informa\u00e7\u00f5es de log do Magento 2 em um arquivo de log personalizado &#8211; no caso, <code>magenteiro.log<\/code>.<\/p>\n\n\n\n<p>Para isso, n\u00f3s precisamos:<\/p>\n\n\n\n<ol><li>Criar uma classe <em>Handler<\/em>, que estende a classe Base (<code>\\Magento\\Framework\\Logger\\Handler\\Base<\/code>)<\/li><li>Definir no <code>__construct<\/code> desta classe, qual <code>$filesystem<\/code> ser\u00e1 usado pra gravar as informa\u00e7\u00f5es recebidas. Este \u00e9 o \u00fanico par\u00e2metro obrigat\u00f3rio no <code>__construct<\/code> da classe <code>Base<\/code>.<\/li><li>Ainda na classe <em>Handler<\/em>, definir as propriedades protegidas <code>$fileName<\/code> e <code>$loggerType<\/code> com o nome do arquivo que queremos salvar e qual o tipo de criticidade que nosso <em>handler<\/em> vai tratar.<\/li><li>Criar uma classe de log que estenda <code>\\Monolog\\Logger<\/code> para podermos usar depois<\/li><li>Injetar o nome do nosso logger (<code>$name<\/code>) e o handler (<code>$handlers<\/code>) que criamos no construtor dela. Veja <code>\\Monolog\\Logger::__construct<\/code>.<\/li><\/ol>\n\n\n\n<p>Vamos l\u00e1?<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"app\/code\/Magenteiro\/LogExample\/Logger\/Handler.php\" data-enlighter-group=\"mm1\">namespace Magenteiro\\LogExample\\Logger;\n\nuse Magento\\Framework\\Logger\\Handler\\Base;\nuse Monolog\\Logger;\n\nclass Handler extends Base\n{\n    protected $fileName = '\/var\/log\/magenteiro.log';\n    protected $loggerType = Logger::ALERT;\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"app\/code\/Magenteiro\/LogExample\/etc\/di.xml\" data-enlighter-group=\"mm2\">&lt;type name=\"Magenteiro\\LogExample\\Logger\\Handler\">\n    &lt;arguments>\n        &lt;argument name=\"filesystem\" xsi:type=\"object\">Magento\\Framework\\Filesystem\\Driver\\File&lt;\/argument>\n    &lt;\/arguments>\n&lt;\/type><\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"app\/code\/Magenteiro\/LogExample\/Logger\/Logger.php\" data-enlighter-group=\"mm3\">namespace Magenteiro\\LogExample\\Logger;\n\nclass Logger extends \\Monolog\\Logger\n{\n\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"app\/code\/Magenteiro\/LogExample\/etc\/di.xml\" data-enlighter-group=\"mm4\">&lt;type name=\"Magenteiro\\LogExample\\Logger\\Logger\">\n    &lt;arguments>\n        &lt;argument name=\"name\" xsi:type=\"string\">magenteiroLogger&lt;\/argument>\n        &lt;argument name=\"handlers\" xsi:type=\"array\">\n            &lt;item name=\"system\" xsi:type=\"object\">Magenteiro\\LogExample\\Logger\\Handler&lt;\/item>\n        &lt;\/argument>\n    &lt;\/arguments>\n&lt;\/type><\/pre>\n\n\n\n<p>Note que no passo 2 e no passo 5 usamos <em>Dependency Injection<\/em> para informar os par\u00e2metros ao construtor das classes.<\/p>\n\n\n\n<p>Sendo assim, ao importarmos nossa classe e chamarmos o m\u00e9todo <code>alert()<\/code>, o conte\u00fado ser\u00e1 gravado em <code>\/pastamagento\/var\/log\/magenteiro.log<\/code>.<\/p>\n\n\n\n<p>Veja o exemplo:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"app\/code\/Magenteiro\/LogExample\/Console\/Command\/TestCustom.php\" data-enlighter-group=\"mm5\">namespace Magenteiro\\LogExample\\Console\\Command;\n\nuse Symfony\\Component\\Console\\Command\\Command;\nuse Symfony\\Component\\Console\\Input\\InputInterface;\nuse Symfony\\Component\\Console\\Output\\OutputInterface;\n\nclass TestCustom extends Command\n{\n    public function __construct(\\Magenteiro\\LogExample\\Logger\\Logger $logger)\n    {\n        $this->logger = $logger;\n        parent::__construct();\n    }\n\n    \/**\n     * {@inheritdoc}v\n     *\/\n    protected function configure()\n    {\n        $this->setName('magenteiro:logCustomExample')\n            ->setDescription('Usando logs customizados no Magento. Este ser\u00e1 salvo em var\/log\/magenteiro.log');\n    }\n\n    protected function execute(InputInterface $input, OutputInterface $output)\n    {\n        $output->writeln('Agora usando Magenteiro\\Logger');\n        $this->logger->alert('1: Alert: action must be taken immediately');\n\n    }\n}<\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2.png\"><img loading=\"lazy\" width=\"700\" height=\"52\" src=\"https:\/\/magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-700x52.png\" alt=\"Exemplo do resultado do log gravado no Magento 2\" class=\"wp-image-1064\" srcset=\"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-700x52.png 700w, https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-250x19.png 250w, https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-768x57.png 768w, https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-760x57.png 760w, https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-120x9.png 120w, https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2-500x37.png 500w, https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/exemplo-log-no-magento2.png 1366w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><figcaption>Exemplo do resultado gravado em var\/log\/magenteiro.log<\/figcaption><\/figure><\/div>\n\n\n<h1 id=\"h-uma-outra-forma-de-gravar-logs-no-magento-2\">Uma outra forma de gravar logs no Magento 2<\/h1>\n\n\n\n<p>Como vimos, acima temos a forma cl\u00e1ssica e elegante de se fazer um log personalizado no Magento 2.<\/p>\n\n\n\n<p>No entanto, existe uma forma ainda mais direta de faz\u00ea-lo (e menos elegante). Podemos ter resultados semelhantes usando a classe<code>\\Zend\\Log\\Logger<\/code>.<\/p>\n\n\n\n<p>Ficaria assim:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$writer = new \\Zend\\Log\\Writer\\Stream(BP . '\/var\/log\/magenteiro.log');\n$logger = new \\Zend\\Log\\Logger();\n$logger-&gt;addWriter($writer);\n\n$logger-&gt;info('Isso gravado no \/var\/log\/magenteiro.log');<\/pre>\n\n\n\n<p>Desta forma, temos todos os m\u00e9todos de debug (info, debug, warning, etc) sem muito c\u00f3digo.<\/p>\n\n\n\n<p>No entanto, podemos dizer que <strong>este \u00e9 o jeito &#8220;feio&#8221; de fazer<\/strong>. Como sabemos, <strong>devemos <a href=\"https:\/\/www.magenteiro.com\/blog\/magento-2\/dependency-injection-no-magento2\/\" title=\"Entenda como funciona a Inje\u00e7\u00e3o de Depend\u00eancia no Magento 2\">injetar nossas depend\u00eancias<\/a><\/strong> nas nossas classes e m\u00e9todos.<\/p>\n\n\n\n<p>Neste caso precisar\u00edamos de 2 classes: <code>\\Zend\\Log\\Writer\\Stream<\/code> e <code>\\Zend\\Log\\Logger<\/code>, sendo que na primeira delas informamos o caminho completo de onde queremos salvar nosso log.<\/p>\n\n\n\n<p>O problema \u00e9 que a primeira delas exige o caminho completo do arquivo que queremos salvar. Isso nos remete a ter que criar mais inje\u00e7\u00f5es de XML, eventualmente criar um <code>virtualType<\/code>, outras classes, etc. Sendo assim, \u00e9 melhor ficar com o exemplo cl\u00e1ssico, n\u00e3o \u00e9 mesmo?<\/p>\n\n\n\n<h1 id=\"h-modulo-de-exemplo-magento-2-logs\">M\u00f3dulo de exemplo (Magento 2 logs)<\/h1>\n\n\n\n<p>Digite seu nome e e-mail abaixo para obter o m\u00f3dulo com os exemplos exibidos nesta s\u00e9rie.<\/p>\n\n\n\n<p><script type=\"text\/javascript\" src=\"\/\/mkt.magenteiro.com\/form\/generate.js?id=25\"><\/script><\/p>\n\n\n\n<p>Nele voc\u00ea encontrar\u00e1:<\/p>\n\n\n\n<ul><li>bin\/magento magenteiro:logExample &#8211; com exemplo de uso dos logs comuns no Magento 2<\/li><li>bin\/magento magenteiro:logCustomExample &#8211; com exemplo do nosso log customizado<\/li><li>bin\/magento magenteiro:logZendLogExample &#8211; com exemplo &#8220;ruim&#8221; de uso da classe Zend\\Log direto no m\u00e9todo, sem inje\u00e7\u00e3o de depend\u00eancia<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"Este \u00e9 o segundo e \u00faltimo artigo da s\u00e9rie sobre Logs no Magento 2. No primeiro artigo, vimos como usar [&hellip;]","protected":false},"author":1,"featured_media":1067,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27,25],"tags":[83,41,60,68],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v19.0 (Yoast SEO v19.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Gravando arquivo de log personalizado no Magento 2<\/title>\n<meta name=\"description\" content=\"No segundo artigo da s\u00e9rie Logs no Magento 2 voc\u00ea ver\u00e1 como gravar logs no Magento 2 de forma simples e personalizada, com exemplos e explica\u00e7\u00f5es detalhadas\" \/>\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.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gravando arquivo de log personalizado no Magento 2\" \/>\n<meta property=\"og:description\" content=\"No segundo artigo da s\u00e9rie Logs no Magento 2 voc\u00ea ver\u00e1 como gravar logs no Magento 2 de forma simples e personalizada, com exemplos e explica\u00e7\u00f5es detalhadas\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Magenteiro | V\u00eddeos, Artigos, e Cursos Magento 2 e Magento 1\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/magenteiro\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-16T04:00:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-23T00:24:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/logs-no-magento2-p2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ricardo Martins\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@magenteiro\" \/>\n<meta name=\"twitter:site\" content=\"@magenteiro\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ricardo Martins\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#organization\",\"name\":\"Magenteiro\",\"url\":\"https:\/\/www.magenteiro.com\/blog\/\",\"sameAs\":[\"https:\/\/www.instagram.com\/magenteiro\",\"https:\/\/www.linkedin.com\/company\/magenteiro\",\"https:\/\/www.youtube.com\/magenteiro\",\"https:\/\/facebook.com\/magenteiro\",\"https:\/\/twitter.com\/magenteiro\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2017\/04\/logo-white.png\",\"contentUrl\":\"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2017\/04\/logo-white.png\",\"width\":787,\"height\":149,\"caption\":\"Magenteiro\"},\"image\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#website\",\"url\":\"https:\/\/www.magenteiro.com\/blog\/\",\"name\":\"Magenteiro | V\u00eddeos, Artigos, e Cursos Magento 2 e Magento 1\",\"description\":\"Artigos t\u00e9cnicos, tutoriais e muitos v\u00eddeos e cursos sobre Magento. Aqui voc\u00ea encontra dicas para lojistas e desenvolvedores feitos por quem entende do assunto.\",\"publisher\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.magenteiro.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\",\"url\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\",\"name\":\"Gravando arquivo de log personalizado no Magento 2\",\"isPartOf\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#website\"},\"datePublished\":\"2018-10-16T04:00:48+00:00\",\"dateModified\":\"2022-08-23T00:24:35+00:00\",\"description\":\"No segundo artigo da s\u00e9rie Logs no Magento 2 voc\u00ea ver\u00e1 como gravar logs no Magento 2 de forma simples e personalizada, com exemplos e explica\u00e7\u00f5es detalhadas\",\"breadcrumb\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.magenteiro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gravando arquivo de log personalizado no Magento 2\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\"},\"author\":{\"name\":\"Ricardo Martins\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#\/schema\/person\/e90c4bb268e5f2dad10d7c9760d4f150\"},\"headline\":\"Gravando arquivo de log personalizado no Magento 2\",\"datePublished\":\"2018-10-16T04:00:48+00:00\",\"dateModified\":\"2022-08-23T00:24:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/\"},\"wordCount\":672,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#organization\"},\"keywords\":[\"Logs no Magento 2\",\"Magento 2\",\"Tutoriais Magento\",\"tutorial\"],\"articleSection\":[\"Desenvolvimento\",\"Magento 2\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#\/schema\/person\/e90c4bb268e5f2dad10d7c9760d4f150\",\"name\":\"Ricardo Martins\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.magenteiro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ae5800c87c4e0f6a4a6b7a3d66aae138?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ae5800c87c4e0f6a4a6b7a3d66aae138?s=96&d=mm&r=g\",\"caption\":\"Ricardo Martins\"},\"description\":\"\u00c9 desenvolvedor web h\u00e1 16 anos e um dos primeiros certificados pela Magento no Brasil. Instrutor de mais de 11 cursos Magento (os principais no magenteiro.com\/cursos) com mais de 14 mil alunos de 105 pa\u00edses, \u00e9 tamb\u00e9m criador do m\u00f3dulo PagSeguro Transparente, usado em mais de 12 mil lojas.\",\"sameAs\":[\"https:\/\/www.magenteiro.com\/\"],\"url\":\"https:\/\/www.magenteiro.com\/blog\/author\/ricardomartins\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gravando arquivo de log personalizado no Magento 2","description":"No segundo artigo da s\u00e9rie Logs no Magento 2 voc\u00ea ver\u00e1 como gravar logs no Magento 2 de forma simples e personalizada, com exemplos e explica\u00e7\u00f5es detalhadas","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.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/","og_locale":"pt_BR","og_type":"article","og_title":"Gravando arquivo de log personalizado no Magento 2","og_description":"No segundo artigo da s\u00e9rie Logs no Magento 2 voc\u00ea ver\u00e1 como gravar logs no Magento 2 de forma simples e personalizada, com exemplos e explica\u00e7\u00f5es detalhadas","og_url":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/","og_site_name":"Magenteiro | V\u00eddeos, Artigos, e Cursos Magento 2 e Magento 1","article_publisher":"https:\/\/facebook.com\/magenteiro","article_published_time":"2018-10-16T04:00:48+00:00","article_modified_time":"2022-08-23T00:24:35+00:00","og_image":[{"width":900,"height":450,"url":"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2018\/10\/logs-no-magento2-p2.jpg","type":"image\/jpeg"}],"author":"Ricardo Martins","twitter_card":"summary_large_image","twitter_creator":"@magenteiro","twitter_site":"@magenteiro","twitter_misc":{"Written by":"Ricardo Martins","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.magenteiro.com\/blog\/#organization","name":"Magenteiro","url":"https:\/\/www.magenteiro.com\/blog\/","sameAs":["https:\/\/www.instagram.com\/magenteiro","https:\/\/www.linkedin.com\/company\/magenteiro","https:\/\/www.youtube.com\/magenteiro","https:\/\/facebook.com\/magenteiro","https:\/\/twitter.com\/magenteiro"],"logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.magenteiro.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2017\/04\/logo-white.png","contentUrl":"https:\/\/www.magenteiro.com\/blog\/wp-content\/uploads\/2017\/04\/logo-white.png","width":787,"height":149,"caption":"Magenteiro"},"image":{"@id":"https:\/\/www.magenteiro.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/www.magenteiro.com\/blog\/#website","url":"https:\/\/www.magenteiro.com\/blog\/","name":"Magenteiro | V\u00eddeos, Artigos, e Cursos Magento 2 e Magento 1","description":"Artigos t\u00e9cnicos, tutoriais e muitos v\u00eddeos e cursos sobre Magento. Aqui voc\u00ea encontra dicas para lojistas e desenvolvedores feitos por quem entende do assunto.","publisher":{"@id":"https:\/\/www.magenteiro.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.magenteiro.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/","url":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/","name":"Gravando arquivo de log personalizado no Magento 2","isPartOf":{"@id":"https:\/\/www.magenteiro.com\/blog\/#website"},"datePublished":"2018-10-16T04:00:48+00:00","dateModified":"2022-08-23T00:24:35+00:00","description":"No segundo artigo da s\u00e9rie Logs no Magento 2 voc\u00ea ver\u00e1 como gravar logs no Magento 2 de forma simples e personalizada, com exemplos e explica\u00e7\u00f5es detalhadas","breadcrumb":{"@id":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.magenteiro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Gravando arquivo de log personalizado no Magento 2"}]},{"@type":"Article","@id":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#article","isPartOf":{"@id":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/"},"author":{"name":"Ricardo Martins","@id":"https:\/\/www.magenteiro.com\/blog\/#\/schema\/person\/e90c4bb268e5f2dad10d7c9760d4f150"},"headline":"Gravando arquivo de log personalizado no Magento 2","datePublished":"2018-10-16T04:00:48+00:00","dateModified":"2022-08-23T00:24:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/"},"wordCount":672,"commentCount":1,"publisher":{"@id":"https:\/\/www.magenteiro.com\/blog\/#organization"},"keywords":["Logs no Magento 2","Magento 2","Tutoriais Magento","tutorial"],"articleSection":["Desenvolvimento","Magento 2"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.magenteiro.com\/blog\/magento-2\/log-personalizado-no-magento-2\/#respond"]}]},{"@type":"Person","@id":"https:\/\/www.magenteiro.com\/blog\/#\/schema\/person\/e90c4bb268e5f2dad10d7c9760d4f150","name":"Ricardo Martins","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.magenteiro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ae5800c87c4e0f6a4a6b7a3d66aae138?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae5800c87c4e0f6a4a6b7a3d66aae138?s=96&d=mm&r=g","caption":"Ricardo Martins"},"description":"\u00c9 desenvolvedor web h\u00e1 16 anos e um dos primeiros certificados pela Magento no Brasil. Instrutor de mais de 11 cursos Magento (os principais no magenteiro.com\/cursos) com mais de 14 mil alunos de 105 pa\u00edses, \u00e9 tamb\u00e9m criador do m\u00f3dulo PagSeguro Transparente, usado em mais de 12 mil lojas.","sameAs":["https:\/\/www.magenteiro.com\/"],"url":"https:\/\/www.magenteiro.com\/blog\/author\/ricardomartins\/"}]}},"_links":{"self":[{"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/posts\/1057"}],"collection":[{"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/comments?post=1057"}],"version-history":[{"count":9,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/posts\/1057\/revisions"}],"predecessor-version":[{"id":3835,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/posts\/1057\/revisions\/3835"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/media\/1067"}],"wp:attachment":[{"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/media?parent=1057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/categories?post=1057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.magenteiro.com\/blog\/wp-json\/wp\/v2\/tags?post=1057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}