Magento 2 folosește biblioteca Monolog (conformă cu standardul PSR-3) pentru înregistrarea logurilor. Fișierele se află implicit în var/log/ — cele mai importante fiind var/log/system.log și var/log/debug.log (plus exception.log).
Niveluri de log (PSR-3)
Cele opt niveluri, de la cel mai sever la cel mai puțin: emergency, alert, critical, error, warning, notice, info, debug.
Scrierea în log
Injectează Psr\Log\LoggerInterface prin constructor și folosește metoda corespunzătoare nivelului:
use Psr\Log\LoggerInterface;
class MyService
{
private $logger;
public function __construct(LoggerInterface $logger) { $this->logger = $logger; }
public function doSomething()
{
try {
// ...
} catch (\Throwable $e) {
$this->logger->critical($e->getMessage(), ['exception' => $e]);
}
}
}
Logger personalizat (fișier propriu)
Creează un handler care extinde Magento\Framework\Logger\Handler\Base, cu propriul $fileName și $loggerType:
namespace Vendor\Module\Logger;
class Handler extends \Magento\Framework\Logger\Handler\Base
{
protected $loggerType = \Monolog\Logger::INFO;
protected $fileName = '/var/log/mymodule.log';
}
Declară apoi un logger prin virtualType în etc/di.xml, legându-l de handler, și injectează-l acolo unde ai nevoie:
<virtualType name="Vendor\Module\Logger\CustomLogger" type="Magento\Framework\Logger\Monolog">
<arguments>
<argument name="name" xsi:type="string">mymodule</argument>
<argument name="handlers" xsi:type="array">
<item name="debug" xsi:type="object">Vendor\Module\Logger\Handler</item>
</argument>
</arguments>
</virtualType>