您不需要自定义或尝试扩展Magento2的日志记录。就像您说的那样,它使用的是Monolog,仅进行了少量定制。编写您自己的扩展Monolog的记录器就足够了。
假设您的模块在YourNamespace/YourModule:
1)在Logger/Logger.php以下位置编写Logger类:
<?php
namespace YourNamespace\YourModule\Logger;
class Logger extends \Monolog\Logger
{
}
2)在Logger/Handler.php以下位置编写Handler类:
<?php
namespace YourNamespace\YourModule\Logger;
use Monolog\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/myfilename.log';
}
注意:这是使用Magento代码的唯一步骤。\Magento\Framework\Logger\Handler\Base扩展Monolog的内容StreamHandler,例如,在$ fileName属性前添加Magento基本路径。
3)依赖注入中的注册记录器etc/di.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
    <type name="YourNamespace\YourModule\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="YourNamespace\YourModule\Logger\Logger">
        <arguments>
            <argument name="name" xsi:type="string">myLoggerName</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">YourNamespace\YourModule\Logger\Handler</item>
            </argument>
        </arguments>
    </type>
</config>
注意:这不是严格要求,但允许DI将特定的参数传递给构造函数。如果不执行此步骤,则需要调整构造函数以设置处理程序。
4)在您的Magento类中使用记录器:
这是通过依赖注入完成的。在下面,您将找到一个仅写入日志条目的虚拟类:
<?php
namespace YourNamespace\YourModule\Model;
class MyModel
{
    /**
     * Logging instance
     * @var \YourNamespace\YourModule\Logger\Logger
     */
    protected $_logger;
    /**
     * Constructor
     * @param \YourNamespace\YourModule\Logger\Logger $logger
     */
    public function __construct(
        \YourNamespace\YourModule\Logger\Logger $logger
    ) {
        $this->_logger = $logger;
    }
    public function doSomething()
    {
        $this->_logger->info('I did something');
    }
}