Bläddra i källkod

Monolog Handler

Guillermo Espinoza 7 år sedan
förälder
incheckning
5f7bbc701c

+ 12 - 0
Resources/config/services.yml

@@ -1,4 +1,16 @@
+monolog:
+    channels: ['devicelog']
+    handlers:
+        devicelog:
+            channels: ['devicelog']
+            type: service
+            id: monolog.devicelog_handler
+
 services:
+    monolog.devicelog_handler:
+        class: DeviceBundle\Services\MonologHandler
+        arguments: ['@webservice','%remote_device_url%','%remote_device_log_url%']
+    
     device.device_validator:
         class: DeviceBundle\Validator\Constraints\DeviceValidator
         arguments: ["@webservice","%device_check_url%"]

+ 2 - 1
Resources/views/show_device_log.html.twig

@@ -2,5 +2,6 @@
 
 {% block field %}
     {% set class = admin.class %}
-    <pre style="font-size: 10px;">{{ device_log(object) }}</pre>
+       
+    <pre class="log">{{ device_log(object) }}</pre>
 {% endblock %}

+ 60 - 0
Services/MonologHandler.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace DeviceBundle\Services;
+
+use Buzz\Message\RequestInterface as HttpRequestInterface;
+use Monolog\Handler\AbstractProcessingHandler;
+use WebserviceBundle\Services\Webservice;
+
+class MonologHandler extends AbstractProcessingHandler
+{
+
+    /**
+     * @var Webservice
+     */
+    protected $webservice;
+    
+    /**
+     * @var string
+     */
+    protected $deviceGetUrl;
+
+    /**
+     * @var string
+     */
+    protected $deviceLogUrl;
+
+
+    /**
+     * @param Webservice $webservice
+     * @param string $deviceGetUrl
+     * @param string $deviceLogUrl
+     */
+    public function __construct(Webservice $webservice, $deviceGetUrl, $deviceLogUrl)
+    {
+        parent::__construct();
+        $this->webservice = $webservice;
+        $this->deviceGetUrl = $deviceGetUrl;
+        $this->deviceLogUrl = $deviceLogUrl;
+    }
+
+    /**
+     * Crea un DeviceLog por REST en la app Base
+     * 
+     * @param array $record
+     */
+    protected function write(array $record)
+    {
+        $filters = array(
+            'deviceType' => $record['context']['deviceType'],
+            'deviceId' => $record['context']['deviceId'],
+        );
+        $device = $this->webservice->get($this->deviceGetUrl, $filters);
+        if ($device) {
+            $data['device'] = $device[0]['id'];
+            $data['message'] = $record['formatted'];
+            $result = $this->webservice->makeRequest($this->deviceLogUrl, HttpRequestInterface::METHOD_POST, $data);
+        }
+    }
+
+}