symfony क्या मैं एक नियंत्रक या सेवा में त्रुटियों को लॉग इन करना चाहूंगा?



logging service (1)

मेरे पास एक सिम्फनी नियंत्रक है, जो मूल रूप से जांचता है कि अगर अनुरोध किया गया पैरामीटर अनुरोध में हैं, तो इन मानदंडों को एक सेवा में भेज दिया जाता है सेवा एपीआई कॉल करने के लिए गज़ले का उपयोग करती है, नतीजे के साथ कुछ चीजें करती है और फिर प्रतिक्रिया के साथ एक जेसन को प्रदर्शित करने के लिए इसे वापस नियंत्रक तक पहुंचाती है।

मेरे पास त्रुटियों के निपटने के बारे में एक प्रश्न है, अगर एपी मैं गजले से फोन करता हूं तो कोई त्रुटि लौटाता है, सबसे अच्छा समाधान क्या है?

समाधान 1: क्या मुझे अपनी सेवा में इंजेक्शन लगाने वाली लकड़हारा सेवा का उपयोग कर त्रुटि को लॉग ऑन करना चाहिए और इसे प्रदर्शित करने के लिए एक त्रुटि मेरे नियंत्रक पर लौटा देना चाहिए I

समाधान 2: क्या मुझे सेवा में एक अपवाद फेंकना चाहिए, इसे अपने नियंत्रक में पकड़कर और लॉग इन फ़ाइलों में त्रुटि को लॉग करने के लिए नियंत्रक में $ $$- ("लकड़हारा") प्राप्त करें

https://code.i-harness.com


यह अच्छा होगा यदि आपका मुख्य तर्क किसी सेवा में है और आपके नियंत्रक में नहीं है

इस तरह, आप उस सेवा के अंदर प्रयास-पकड़ ब्लॉक का उपयोग कर सकते हैं जहां आप किसी अन्य सेवा को कॉल करते हैं और आपका नियंत्रक साफ और साफ रहता है - आप किसी भी अपवाद को पकड़ने के बिना सेवा को बुलाते हैं।

// AppBundle/src/Controller/MainController.php
public function mainAction()
{
  // ...
  $result = $this->get('my_service')->getResult($parameters);
  if (!$result) {
    // show an error message, pass it to another service, ignore it or whatever you like
  }
}

// AppBundle/src/Service/MyService.php
public function getResult($parameters)
{
  try {
    $apiResult = $this->apiService->get($parameters);
  } catch (ApiException $e)
    $this->logger->error('My error message');
    $apiResult = null;
  }

  return $apiResult;
}

समाधान 3 पर भी विचार करें: किसी सेवा में एक अपवाद फेंक दें और इसे कस्टम अपवाद श्रोता में पकड़ लें, जहां आप इसे लॉग कर सकते हैं और आगे की कार्रवाई कर सकते हैं (रिस्पांस ऑब्जेक्ट की जगह आदि)।





monolog