From b6605995665463d1b42b2ed9d6acb50c44aa3f38 Mon Sep 17 00:00:00 2001
From: "@ChristelLoftus" <christel@bob.co.za>
Date: Wed, 31 Jul 2024 10:46:59 +0200
Subject: [PATCH] Add custom logger - monolog

---
 Logger/CustomLogger.php |  6 ++++++
 Logger/Handler.php      | 11 +++++++++++
 Model/Carrier/BobGo.php | 41 ++++++++++++++++++++++-------------------
 etc/env.php             | 19 +++++++++++++++++++
 etc/frontend/di.xml     | 21 +++++++++++++++++----
 5 files changed, 75 insertions(+), 23 deletions(-)
 create mode 100644 Logger/CustomLogger.php
 create mode 100644 Logger/Handler.php
 create mode 100644 etc/env.php

diff --git a/Logger/CustomLogger.php b/Logger/CustomLogger.php
new file mode 100644
index 0000000..ced63ec
--- /dev/null
+++ b/Logger/CustomLogger.php
@@ -0,0 +1,6 @@
+<?php
+namespace BobGroup\BobGo\Logger;
+
+class CustomLogger extends \Monolog\Logger
+{
+}
diff --git a/Logger/Handler.php b/Logger/Handler.php
new file mode 100644
index 0000000..89a1aae
--- /dev/null
+++ b/Logger/Handler.php
@@ -0,0 +1,11 @@
+<?php
+namespace BobGroup\BobGo\Logger;
+
+use Monolog\Logger;
+use Magento\Framework\Logger\Handler\Base;
+
+class Handler extends Base
+{
+    protected $fileName = '/var/log/bobgo.log';
+    protected $loggerType = Logger::DEBUG;
+}
diff --git a/Model/Carrier/BobGo.php b/Model/Carrier/BobGo.php
index c7821dc..a93c633 100644
--- a/Model/Carrier/BobGo.php
+++ b/Model/Carrier/BobGo.php
@@ -1179,7 +1179,6 @@
 //}
 
 
-<?php
 namespace BobGroup\BobGo\Model\Carrier;
 
 use Magento\Framework\App\Config\ScopeConfigInterface;
@@ -1188,7 +1187,7 @@ use Magento\Quote\Model\Quote\Address\RateRequest;
 use Magento\Shipping\Model\Carrier\AbstractCarrierOnline;
 use Magento\Shipping\Model\Carrier\CarrierInterface;
 use Magento\Shipping\Model\Rate\Result;
-use Psr\Log\LoggerInterface;
+use BobGroup\BobGo\Logger\CustomLogger;
 
 class BobGo extends AbstractCarrierOnline implements CarrierInterface
 {
@@ -1197,31 +1196,32 @@ class BobGo extends AbstractCarrierOnline implements CarrierInterface
 
     protected $scopeConfig;
     protected $httpClientFactory;
-    protected $logger;
+    protected $customLogger;
 
     public function __construct(
-        ScopeConfigInterface $scopeConfig,
+        ScopeConfigInterface                                       $scopeConfig,
         \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory,
-        LoggerInterface $logger,
-        ZendClientFactory $httpClientFactory,
-        array $data = []
-    ) {
+        CustomLogger                                               $customLogger,
+        ZendClientFactory                                          $httpClientFactory,
+        array                                                      $data = []
+    )
+    {
         $this->scopeConfig = $scopeConfig;
         $this->httpClientFactory = $httpClientFactory;
-        $this->logger = $logger;
-        parent::__construct($scopeConfig, $rateErrorFactory, $logger, $data);
+        $this->customLogger = $customLogger;
+        parent::__construct($scopeConfig, $rateErrorFactory, $customLogger, $data);
     }
 
     public function collectRates(RateRequest $request)
     {
-        $this->logger->info('BobGo collectRates method called');
+        $this->customLogger->info('BobGo collectRates method called');
 
         if (!$this->getConfigFlag('active')) {
-            $this->logger->info('BobGo is not active');
+            $this->customLogger->info('BobGo is not active');
             return false;
         }
 
-        $this->logger->info('BobGo is active, proceeding with rate collection');
+        $this->customLogger->info('BobGo is active, proceeding with rate collection');
 
         $result = $this->_rateFactory->create();
 
@@ -1235,11 +1235,11 @@ class BobGo extends AbstractCarrierOnline implements CarrierInterface
             'package_qty' => $request->getPackageQty(),
         ];
 
-        $this->logger->info('Request parameters: ' . json_encode($params));
+        $this->customLogger->info('Request parameters: ' . json_encode($params));
 
         try {
             $apiResponse = $this->_fetchRatesFromApi($params);
-            $this->logger->info('API response: ' . json_encode($apiResponse));
+            $this->customLogger->info('API response: ' . json_encode($apiResponse));
 
             if ($apiResponse && isset($apiResponse['rates']) && !empty($apiResponse['rates'])) {
                 foreach ($apiResponse['rates'] as $rateData) {
@@ -1253,7 +1253,7 @@ class BobGo extends AbstractCarrierOnline implements CarrierInterface
                     $result->append($rate);
                 }
             } else {
-                $this->logger->info('No rates returned from API');
+                $this->customLogger->info('No rates returned from API');
                 $error = $this->_rateErrorFactory->create();
                 $error->setCarrier($this->_code);
                 $error->setCarrierTitle($this->getConfigData('title'));
@@ -1261,7 +1261,7 @@ class BobGo extends AbstractCarrierOnline implements CarrierInterface
                 return $error;
             }
         } catch (\Exception $e) {
-            $this->logger->error('Error fetching rates from API: ' . $e->getMessage());
+            $this->customLogger->error('Error fetching rates from API: ' . $e->getMessage());
             $error = $this->_rateErrorFactory->create();
             $error->setCarrier($this->_code);
             $error->setCarrierTitle($this->getConfigData('title'));
@@ -1287,10 +1287,10 @@ class BobGo extends AbstractCarrierOnline implements CarrierInterface
             if ($response->isSuccessful()) {
                 return json_decode($response->getBody(), true);
             } else {
-                $this->logger->error('API request failed with status: ' . $response->getStatus());
+                $this->customLogger->error('API request failed with status: ' . $response->getStatus());
             }
         } catch (\Exception $e) {
-            $this->logger->error('Exception during API request: ' . $e->getMessage());
+            $this->customLogger->error('Exception during API request: ' . $e->getMessage());
         }
 
         return false;
@@ -1302,3 +1302,6 @@ class BobGo extends AbstractCarrierOnline implements CarrierInterface
     }
 }
 
+
+
+
diff --git a/etc/env.php b/etc/env.php
new file mode 100644
index 0000000..f8a2cb3
--- /dev/null
+++ b/etc/env.php
@@ -0,0 +1,19 @@
+<?php
+return [
+    'backend' => [
+        'frontName' => 'admin'
+    ],
+    'install' => [
+        'date' => 'Wed, 15 Jan 2020 00:00:00 +0000'
+    ],
+    'system' => [
+        'default' => [
+            'dev' => [
+                'log' => [
+                    'active' => '1'
+                ]
+            ]
+        ]
+    ],
+    // Other configurations...
+];
diff --git a/etc/frontend/di.xml b/etc/frontend/di.xml
index 2ee6f54..21df849 100644
--- a/etc/frontend/di.xml
+++ b/etc/frontend/di.xml
@@ -1,9 +1,22 @@
+<?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="Magento\Checkout\Block\Checkout\LayoutProcessor">-->
+<!--        <plugin name="add_custom_field_checkout_shipping_form" type="BobGroup\BobGo\Plugin\Checkout\Block\LayoutProcessorPlugin" sortOrder="10"/>-->
+<!--        <arguments>-->
+<!--            <argument name="layoutProcessors" xsi:type="array">-->
+<!--                <item name="orderattribute" xsi:type="object">BobGroup\BobGo\Plugin\Checkout\Block\LayoutProcessorPlugin</item>-->
+<!--            </argument>-->
+<!--        </arguments>-->
+<!--    </type>-->
+<!--</config>-->
+
+
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
-    <type name="Magento\Checkout\Block\Checkout\LayoutProcessor">
-        <plugin name="add_custom_field_checkout_shipping_form" type="BobGroup\BobGo\Plugin\Checkout\Block\LayoutProcessorPlugin" sortOrder="10"/>
+    <type name="BobGroup\BobGo\Logger\CustomLogger">
         <arguments>
-            <argument name="layoutProcessors" xsi:type="array">
-                <item name="orderattribute" xsi:type="object">BobGroup\BobGo\Plugin\Checkout\Block\LayoutProcessorPlugin</item>
+            <argument name="name" xsi:type="string">bobgo</argument>
+            <argument name="handlers" xsi:type="array">
+                <item name="stream" xsi:type="object">BobGroup\BobGo\Logger\Handler</item>
             </argument>
         </arguments>
     </type>
-- 
GitLab