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

ElasticaLogger::logQuery()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 23
ccs 17
cts 17
cp 1
rs 9.0857
cc 3
eloc 16
nc 4
nop 8
crap 3

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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