|
@@ -24,9 +24,9 @@ class LogConsumer implements ConsumerInterface
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * $msg will be an instance of `PhpAmqpLib\Message\AMQPMessage`
|
|
|
+ * $msg will be an instance of `PhpAmqpLib\Message\AMQPMessage`
|
|
|
* with the $msg->body being the data sent over RabbitMQ.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param AMQPMessage $msg
|
|
|
*/
|
|
|
public function execute(AMQPMessage $msg)
|
|
@@ -38,6 +38,20 @@ class LogConsumer implements ConsumerInterface
|
|
|
$json_error = json_last_error();
|
|
|
if (!$json_error) {
|
|
|
// se hace un date format previo
|
|
|
+ if (isset($msgBody['datetime']) && isset($msgBody['datetime']['date'])) {
|
|
|
+ $d = new \DateTime($msgBody['datetime']['date']);
|
|
|
+ } else {
|
|
|
+ $d = new DateTime("now");
|
|
|
+ }
|
|
|
+ $fields['dateCreated'] = $d;
|
|
|
+ $fields['singleMessage'] = isset($msgBody['message']) ? $msgBody['message'] : "";
|
|
|
+ $fields['context'] = isset($msgBody['context']) ? json_encode($msgBody['context']) : "";
|
|
|
+ $fields['levelName'] = isset($msgBody['level_name']) ? $msgBody['level_name'] : "";
|
|
|
+ $fields['channel'] = isset($msgBody['channel']) ? $msgBody['channel'] : "";
|
|
|
+ $fields['extra'] = isset($msgBody['extra']) ? json_encode($msgBody['extra']) : "";
|
|
|
+ $fields['exchange'] = $msg->has('exchange') ? $msg->get('exchange') : "";
|
|
|
+ $fields['routingKey'] = $msg->has('routing_key') ? $msg->get('routing_key') : "";
|
|
|
+
|
|
|
$msgBody['datetime'] = date('Y-m-d H:i:s', strtotime($msgBody['datetime']['date']));
|
|
|
$fields['message'] = $this->serviceContainer->get('monolog_line_formatter')->format($msgBody);
|
|
|
if (isset($msgBody['context']['deviceId']) && isset($msgBody['context']['deviceType'])) {
|
|
@@ -51,32 +65,72 @@ class LogConsumer implements ConsumerInterface
|
|
|
} catch (\Exception $ex) {
|
|
|
$fields['message'] = $ex->getMessage();
|
|
|
}
|
|
|
-
|
|
|
$log = $this->createLog($fields, $logClass);
|
|
|
if (is_null($log)) {
|
|
|
var_dump('Error: log no creado');
|
|
|
} else {
|
|
|
var_dump(sprintf("ID: %s Message: %s", $log->getId(), $log->getMessage()));
|
|
|
}
|
|
|
-
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Crea una entidad Log y la persiste
|
|
|
- *
|
|
|
+ *
|
|
|
* @param array $fields
|
|
|
* @param string $logClass
|
|
|
- *
|
|
|
+ *
|
|
|
* @return \WorkflowBundle\Services\LogBundle\Entity\Log
|
|
|
*/
|
|
|
private function createLog($fields, $logClass = 'LogBundle\Entity\Log')
|
|
|
{
|
|
|
if (class_exists($logClass)) {
|
|
|
$em = $this->serviceContainer->get('doctrine.orm.entity_manager');
|
|
|
-
|
|
|
- $log = new $logClass();
|
|
|
+
|
|
|
+ $log = new $logClass();
|
|
|
$log->setMessage($fields['message']);
|
|
|
+ if ($logClass == 'LogBundle\Entity\Log') {
|
|
|
+ if (isset($fields['singleMessage'])) {
|
|
|
+ $log->setSingleMessage(substr($fields['singleMessage'], 0, 128));
|
|
|
+ } else {
|
|
|
+ $log->setSingleMessage("");
|
|
|
+ }
|
|
|
+ if (isset($fields['dateCreated'])) {
|
|
|
+ $log->setDateCreated($fields['dateCreated']);
|
|
|
+ } else {
|
|
|
+ $log->setDateCreated(new DateTime("now"));
|
|
|
+ }
|
|
|
+ if (isset($fields['context'])) {
|
|
|
+ $log->setContext(substr($fields['context'], 0, 128));
|
|
|
+ } else {
|
|
|
+ $log->setContext("");
|
|
|
+ }
|
|
|
+ if (isset($fields['levelName'])) {
|
|
|
+ $log->setLevelName(substr($fields['levelName'], 0, 32));
|
|
|
+ } else {
|
|
|
+ $log->setLevelName("");
|
|
|
+ }
|
|
|
+ if (isset($fields['channel'])) {
|
|
|
+ $log->setChannel(substr($fields['channel'], 0, 32));
|
|
|
+ } else {
|
|
|
+ $log->setChannel("");
|
|
|
+ }
|
|
|
+ if (isset($fields['extra'])) {
|
|
|
+ $log->setExtra(substr($fields['extra'], 0, 128));
|
|
|
+ } else {
|
|
|
+ $log->setExtra("");
|
|
|
+ }
|
|
|
+ if (isset($fields['exchange'])) {
|
|
|
+ $log->setExchange(substr($fields['exchange'], 0, 32));
|
|
|
+ } else {
|
|
|
+ $log->setExchange("");
|
|
|
+ }
|
|
|
+ if (isset($fields['routingKey'])) {
|
|
|
+ $log->setRoutingKey(substr($fields['routingKey'], 0, 32));
|
|
|
+ } else {
|
|
|
+ $log->setRoutingKey("");
|
|
|
+ }
|
|
|
+ }
|
|
|
if (isset($fields['deviceId']) && isset($fields['deviceType'])) {
|
|
|
$device = $em->getRepository('LicenseBundle:Device')->findOneBy([
|
|
|
'deviceId' => $fields['deviceId'],
|
|
@@ -86,6 +140,7 @@ class LogConsumer implements ConsumerInterface
|
|
|
}
|
|
|
|
|
|
$validator = $this->serviceContainer->get('validator');
|
|
|
+
|
|
|
if ($validator->validate($log)->count() == 0) {
|
|
|
$em->persist($log);
|
|
|
$em->flush($log);
|
|
@@ -93,7 +148,7 @@ class LogConsumer implements ConsumerInterface
|
|
|
return $log;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return null;
|
|
|
}
|
|
|
|