Back to Top

Magento2 Custom Log File Using Monolog

Updated 4 March 2024

Magento 2 Custom Log File Using Monolog – Creating a custom module in magento 2 often requires to identify the errors and information logs for various reasons such as debugging .

But it is difficult to find the relevant information that is required in one single log file. Therefore, we should always create a custom log file for every module in Magento.

If you are having issue with creating your own custom log file then you can find the solution here in this blog,here you can learn how to create your own custom log file.

Here I am going to create a custom log file named “customfile.log” file using Default Magento 2 logger (Monolog), so now I am going to explain step by step please follow the steps below to create one of your own.

Step 1 : Declaration of Logger and handlers in Magento 2 custom module

Searching for an experienced
Magento 2 Company ?
Find out More

Create a file di.xml by following the path your_magento_root/app/code/Webkul/Modulename/etc/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Webkul\Modulename\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="Webkul\Modulename\Logger\Logger">
        <arguments>
            <argument name="name" xsi:type="string">customLogHandler</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">Webkul\Modulename\Logger\Handler</item>
            </argument>
        </arguments>
    </type>
</config>

Step 2 : Create a file Handler.php at Webkul\Modulename\Logger\ which will extend \Magento\Framework\Logger\Handler\Base class

Here I am defining the custom log file name as “customfile.log” in Handler class

<?php

namespace Webkul\Modulename\Logger;

class Handler extends \Magento\Framework\Logger\Handler\Base
{
    /**
     * Logging level
     * @var int
     */
    protected $loggerType = Logger::INFO;

    /**
     * File name
     * @var string
     */
    protected $fileName = '/var/log/customfile.log';
}

Step 3 : Create a file Logger.php at following path Webkul\Modulename\Logger\ which will extend the Monolog\Logger class

<?php
namespace Webkul\Modulename\Logger;

class Logger extends \Monolog\Logger
{
}

Step 4 : log any test data in your log file “customfile.log” by calling your custom Magento 2 Controller or Helper method, Here I am using Controller to log data in my custom log file

<?php
namespace Webkul\Modulename\Controller\Index;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;

class Index extends Action
{
    /**
     * Logging instance
     * @var \Webkul\Modulename\Logger\Logger
     */
    protected $_logger;

    /**
     * @param Context $context
     * @param \Webkul\Modulename\Logger\Logger $logger
     */
    public function __construct(
        Context $context,
        \Webkul\Modulename\Logger\Logger $logger
    ) {
        $this->_logger = $logger;
        parent::__construct($context);
    }


    /**
     * Default customer account page
     *
     * @return \Magento\Framework\View\Result\Page
     */
    public function execute()
    {
        $data = $this->getRequest()->getParams();
        $this->_logger->info(print_r($data)); // log array Data to customfile.log
        $this->_logger->info("Some text string data"); // log string Data to customfile.log
        //  Write Your Code Here
        return $this->resultRedirectFactory->create()->setPath('*/*/*');
    }
}

As you can see we have to call the logger methods to create a log entry in the custom log file.

Here I have used info() method.

Other methods that you can use are :

$this->_logger->warning()

$this->_logger->error()

So in this way you can create your own log file. 🙂

You can also check the below links :

https://devdocs.magento.com/

https://webkul.com/blog/customize-magento2-theme/

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


5 comments

  • Prabhat kumar jena
  • Kirill from Magecom
  • Vaibhav Ahalpara
  • Rajkumar
    • webkul
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home