Completed
Pull Request — master (#1001)
by
unknown
07:05
created

ElasticaLogger   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 155
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 15
c 2
b 0
f 1
lcom 1
cbo 1
dl 0
loc 155
ccs 43
cts 43
cp 1
rs 10

13 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A logQuery() 0 23 3
A getNbQueries() 0 4 1
A getQueries() 0 4 1
A emergency() 0 4 1
A alert() 0 4 1
A critical() 0 4 1
A error() 0 4 1
A warning() 0 4 1
A notice() 0 4 1
A info() 0 4 1
A debug() 0 4 1
A log() 0 4 1
1
<?php
2
3
namespace FOS\ElasticaBundle\Logger;
4
5
use Psr\Log\LoggerInterface;
6
7
/**
8
 * Logger for the Elastica.
9
 *
10
 * The {@link logQuery()} method is configured as the logger callable in the
11
 * service container.
12
 *
13
 * @author Gordon Franke <[email protected]>
14
 */
15
class ElasticaLogger implements LoggerInterface
16
{
17
    /**
18
     * @var LoggerInterface
19
     */
20
    protected $logger;
21
22
    /**
23
     * @var array
24
     */
25
    protected $queries = array();
26
27
    /**
28
     * @var boolean
29
     */
30
    protected $debug;
31
32
    /**
33
     * Constructor.
34
     *
35
     * @param LoggerInterface|null $logger The Symfony logger
36
     * @param boolean              $debug
37
     */
38 26
    public function __construct(LoggerInterface $logger = null, $debug = false)
39
    {
40 26
        $this->logger = $logger;
41 26
        $this->debug = $debug;
42 26
    }
43
44
    /**
45
     * Logs a query.
46
     *
47
     * @param string $path       Path to call
48
     * @param string $method     Rest method to use (GET, POST, DELETE, PUT)
49
     * @param array  $data       Arguments
50
     * @param float  $time       Execution time
51
     * @param array  $connection Host, port, transport, and headers of the query
52
     * @param array  $query      Arguments
53
     */
54 12
    public function logQuery($path, $method, $data, $time, $connection = array(), $query = array(), $engineTime = 0, $itemCount = 0)
55
    {
56 12
        if ($this->debug) {
57 10
            $e = new \Exception();
58
59 10
            $this->queries[] = array(
60 10
                'path' => $path,
61 10
                'method' => $method,
62 10
                'data' => $data,
63 10
                'executionMS' => $time,
64 10
                'engineMS' => $engineTime,
65 10
                'connection' => $connection,
66 10
                'queryString' => $query,
67 10
                'itemCount' => $itemCount,
68 10
                'backtrace' => $e->getTraceAsString()
69
            );
70
        }
71
72 12
        if (null !== $this->logger) {
73 9
            $message = sprintf("%s (%s) %0.2f ms", $path, $method, $time * 1000);
74 9
            $this->logger->info($message, (array) $data);
75
        }
76 12
    }
77
78
    /**
79
     * Returns the number of queries that have been logged.
80
     *
81
     * @return integer The number of queries logged
82
     */
83 3
    public function getNbQueries()
84
    {
85 3
        return count($this->queries);
86
    }
87
88
    /**
89
     * Returns a human-readable array of queries logged.
90
     *
91
     * @return array An array of queries
92
     */
93 1
    public function getQueries()
94
    {
95 1
        return $this->queries;
96
    }
97
98
    /**
99
     * {@inheritdoc}
100
     */
101 1
    public function emergency($message, array $context = array())
102
    {
103 1
        return $this->logger->emergency($message, $context);
104
    }
105
106
    /**
107
     * {@inheritdoc}
108
     */
109 1
    public function alert($message, array $context = array())
110
    {
111 1
        return $this->logger->alert($message, $context);
112
    }
113
114
    /**
115
     * {@inheritdoc}
116
     */
117 1
    public function critical($message, array $context = array())
118
    {
119 1
        return $this->logger->critical($message, $context);
120
    }
121
122
    /**
123
     * {@inheritdoc}
124
     */
125 1
    public function error($message, array $context = array())
126
    {
127 1
        return $this->logger->error($message, $context);
128
    }
129
130
    /**
131
     * {@inheritdoc}
132
     */
133 1
    public function warning($message, array $context = array())
134
    {
135 1
        return $this->logger->warning($message, $context);
136
    }
137
138
    /**
139
     * {@inheritdoc}
140
     */
141 1
    public function notice($message, array $context = array())
142
    {
143 1
        return $this->logger->notice($message, $context);
144
    }
145
146
    /**
147
     * {@inheritdoc}
148
     */
149 1
    public function info($message, array $context = array())
150
    {
151 1
        return $this->logger->info($message, $context);
152
    }
153
154
    /**
155
     * {@inheritdoc}
156
     */
157 9
    public function debug($message, array $context = array())
158
    {
159 9
        return $this->logger->debug($message, $context);
160
    }
161
162
    /**
163
     * {@inheritdoc}
164
     */
165 1
    public function log($level, $message, array $context = array())
166
    {
167 1
        return $this->logger->log($level, $message, $context);
168
    }
169
}
170