[Medverkad av Atwix]{class="badge informative" title="Atwix"} [Endast PaaS]{class="badge informative" title="Gäller endast Adobe Commerce i molnprojekt (Adobe-hanterad PaaS-infrastruktur) och lokala projekt."}
Skriva till en anpassad loggfil
Modulen Magento\Framework\Logger innehåller följande hanterarklasser:
/var/log/debug.log/var/log/exception.log/var/log/system.logDu kan hitta dem i katalogen lib/internal/Magento/Framework/Logger/Handler.
Du kan använda någon av följande metoder för att logga in i en anpassad fil:
- Konfigurera en anpassad loggfil i
di.xml - Ställa in en anpassad fil i den anpassade logghanterarklassen
Konfigurera en anpassad loggfil i di.xml
I det här exemplet visas hur du använder virtuella typer för att logga debug-meddelanden i en anpassad loggfil i stället för en standard /var/log/debug.log.
-
I filen
di.xmli modulen definierar du en anpassad loggfil som en virtuell typ.code language-xml <virtualType name="Magento\Payment\Model\Method\MyCustomDebug" type="Magento\Framework\Logger\Handler\Base"> <arguments> <argument name="fileName" xsi:type="string">/var/log/payment.log</argument> </arguments> </virtualType>Värdet
nameförMagento\Payment\Model\Method\MyCustomDebugmåste vara unikt. -
Definiera hanteraren i en annan virtuell typ med en unik
name:code language-xml <virtualType name="Magento\Payment\Model\Method\MyCustomLogger" type="Magento\Framework\Logger\Monolog"> <arguments> <argument name="handlers" xsi:type="array"> <item name="debug" xsi:type="object">Magento\Payment\Model\Method\MyCustomDebug</item> </argument> </arguments> </virtualType> -
Mata in
MyCustomLoggervirtuell typ iMagento\Payment\Model\Method\Logger-objektet:code language-xml <type name="Magento\Payment\Model\Method\Logger"> <arguments> <argument name="logger" xsi:type="object">Magento\Payment\Model\Method\MyCustomLogger</argument> </arguments> </type> -
Den virtuella klassen
Magento\Payment\Model\Method\MyCustomDebuginjiceras idebug-hanteraren för egenskapen$loggeri klassenMagento\Payment\Model\Method\Logger.code language-xml ... <argument name="handlers" xsi:type="array"> <item name="debug" xsi:type="object">Magento\Payment\Model\Method\MyCustomDebug</item> </argument>
Undantagsmeddelanden loggas in i filen /var/log/payment.log.
Konfigurera en anpassad loggfil i klassen för logghanterare
I det här exemplet visas hur du använder en anpassad logghanterarklass för att logga error-meddelanden i en specifik loggfil.
-
Skapa en klass som loggar data. I det här exemplet definieras klassen i
app/code/Vendor/ModuleName/Logger/Handler/ErrorHandler.php.code language-php <?php /** * @author Vendor * @copyright Copyright (c) 2019 Vendor (https://www.vendor.com/) */ namespace Vendor\ModuleName\Logger\Handler; use Magento\Framework\Logger\Handler\Base as BaseHandler; use Monolog\Logger as MonologLogger; /** * Class ErrorHandler */ class ErrorHandler extends BaseHandler { /** * Logging level * * @var int */ protected $loggerType = MonologLogger::ERROR; /** * File name * * @var string */ protected $fileName = '/var/log/my_custom_logger/error.log'; } -
Definiera hanteraren för den här klassen som en virtuell typ i modulens
di.xml-fil.code language-xml <virtualType name="MyCustomLogger" type="Magento\Framework\Logger\Monolog"> <arguments> <argument name="handlers" xsi:type="array"> <item name="error" xsi:type="object">Vendor\ModuleName\Logger\Handler\ErrorHandler</item> </argument> </arguments> </virtualType>MyCustomLoggerär en unik identifierare. -
I definitionen
typeanger du klassnamnet där den anpassade logghanteraren matas in. Använd det virtuella typnamnet från föregående steg som argument för den här typen.code language-xml <type name="Vendor\ModuleName\Observer\MyObserver"> <arguments> <argument name="logger" xsi:type="object">MyCustomLogger</argument> </arguments> </type>Source-kod för klassen
Vendor\ModuleName\Observer\MyObserver:code language-php <?php /** * @author Vendor * @copyright Copyright (c) 2019 Vendor (https://www.vendor.com/) */ declare(strict_types=1); namespace Vendor\ModuleName\Observer; use Psr\Log\LoggerInterface as PsrLoggerInterface; use Exception; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\Event\Observer; /** * Class MyObserver */ class MyObserver implements ObserverInterface { /** * @var PsrLoggerInterface */ private $logger; /** * MyObserver constructor. * * @param PsrLoggerInterface $logger */ public function __construct( PsrLoggerInterface $logger ) { $this->logger = $logger; } /** * @param Observer $observer */ public function execute(Observer $observer) { try { // some code goes here } catch (Exception $e) { $this->logger->error($e->getMessage()); } } } -
Klassen
Vendor\ModuleName\Logger\Handler\ErrorHandlerinjiceras ierror-hanteraren för egenskapen$loggeriVendor\ModuleName\Observer\MyObserver.code language-xml ... <argument name="handlers" xsi:type="array"> <item name="error" xsi:type="object">Vendor\ModuleName\Logger\Handler\ErrorHandler</item> </argument> ...
Undantagsmeddelanden loggas i filen /var/log/my_custom_logger/error.log.