खोज…
लॉग में भेजे गए उपयोगकर्ता के विवरण और पोस्ट किए गए पैरामीटर जोड़ें
लॉग बहुत महत्वपूर्ण हैं। त्रुटि के संदर्भ को फिर से बनाना कभी-कभी बहुत दर्दनाक हो सकता है क्योंकि त्रुटि कब और कैसे हुई, इस बारे में जानकारी की कमी के कारण।
यह उदाहरण दिखाता है:
त्रुटि लॉग में उपयोगकर्ता का डेटा कैसे जोड़ें
त्रुटि होने पर भेजे गए पोस्ट पैरामीटर को कैसे जोड़ा जाए
अनुरोध के संबंध में सभी डेटा जोड़ने के लिए वेबप्रोसेसर का उपयोग कैसे करें:
- यूआरएल
- आईपी
- http विधि
- सर्वर
- रेफरर
सेवा विन्यास
services:
# Permits to convert logs in HTML format for email notification
monolog.formatter.html:
class: Monolog\Formatter\HtmlFormatter
# Add request data (url, ip, http method, server, referrer)
monolog.processor.web_processor:
class: Monolog\Processor\WebProcessor
tags:
- { name: monolog.processor, method: __invoke }
# Custom class to include user's data and posted parameters in the logs
monolog.processor.user:
class: Company\ToolBoxBundle\Services\Monolog\ExtraProcessor
arguments: ["@security.token_storage"]
tags:
- { name: monolog.processor }
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
सेवा कोड
namespace Company\ToolBoxBundle\Services\Monolog;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class ExtraProcessor
{
/**
* @var string
*/
private $postParams = null;
/**
* @var TokenStorageInterface
*/
private $tokenStorage = null;
/**
* @var \Company\UserBundle\Entity\User
*/
private $user = null;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
// Called when an error occurred and a log (record) is creating
public function __invoke(array $record)
{
if (null !== $this->user) {
// $this->user is your user's entity. Extract all pertinent data you would need. In this case, getUserDetails method create a summary including alias, name, role, ...
$record['extra']['user'] = $this->user->getUserDetails();
}
if (null !== $this->postParams) {
// Includes all posted parameter when the error occurred
$record['extra']['postParams'] = $this->postParams;
}
return $record;
}
public function onKernelRequest(GetResponseEvent $event)
{
// Retain post parameters sent (serialized) in order to log them if needed
$postParams = $event->getRequest()->request->all();
if(false === empty($postParams)){
$this->postParams = serialize($postParams);
}
// Do not continue if user is not logged
if (null === $token = $this->tokenStorage->getToken()) {
return;
}
if (!is_object($user = $token->getUser())) {
// e.g. anonymous authentication
return;
}
// Retain the user entity in order to use it
$this->user = $user;
}
}
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow