Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
31 / 31
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractWriter
100.00% covered (success)
100.00%
31 / 31
100.00% covered (success)
100.00%
5 / 5
19
100.00% covered (success)
100.00%
1 / 1
 setLogLimit
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 getLogLimit
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 hasLogLimit
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isWithinLogLimit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
5
 writeLog
n/a
0 / 0
n/a
0 / 0
0
 getContext
100.00% covered (success)
100.00%
20 / 20
100.00% covered (success)
100.00%
1 / 1
9
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2023 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Log\Writer;
15
16/**
17 * Log writer abstract class
18 *
19 * @category   Pop
20 * @package    Pop\Log
21 * @author     Nick Sagona, III <dev@nolainteractive.com>
22 * @copyright  Copyright (c) 2009-2023 NOLA Interactive, LLC. (http://www.nolainteractive.com)
23 * @license    http://www.popphp.org/license     New BSD License
24 * @version    3.3.0
25 */
26abstract class AbstractWriter implements WriterInterface
27{
28
29    /**
30     * Log limit
31     * @var int
32     */
33    protected $limit = null;
34
35    /**
36     * Set log limit
37     *
38     * @param  int $level
39     * @return AbstractWriter
40     */
41    public function setLogLimit($level)
42    {
43        $level = (int)$level;
44
45        if (($level < 0) || ($level > 7)) {
46            throw new \InvalidArgumentException('Error: The level ' . $level . ' is an invalid level.');
47        }
48
49        $this->limit = $level;
50        return $this;
51    }
52
53    /**
54     * Get log limit
55     *
56     * @return int
57     */
58    public function getLogLimit()
59    {
60        return $this->limit;
61    }
62
63    /**
64     * Has log limit
65     *
66     * @return boolean
67     */
68    public function hasLogLimit()
69    {
70        return (null !== $this->limit);
71    }
72
73    /**
74     * Check if a log level is within the set log level limit
75     *
76     * @param  int $level
77     * @return boolean
78     */
79    public function isWithinLogLimit($level)
80    {
81        $level = (int)$level;
82
83        if (($level < 0) || ($level > 7)) {
84            throw new \InvalidArgumentException('Error: The level ' . $level . ' is an invalid level.');
85        }
86
87        return ((null === $this->limit) || ((null !== $this->limit) && ($level <= $this->limit)));
88    }
89
90    /**
91     * Write to the log
92     *
93     * @param  mixed  $level
94     * @param  string $message
95     * @param  array  $context
96     * @return AbstractWriter
97     */
98    abstract public function writeLog($level, $message, array $context = []);
99
100    /**
101     * Get context for log
102     *
103     * @param  array $context
104     * @return string
105     */
106    public function getContext(array $context = [])
107    {
108        $messageContext = '';
109
110        if (isset($context['timestamp'])) {
111            unset($context['timestamp']);
112        }
113        if (isset($context['name'])) {
114            unset($context['name']);
115        }
116        if (isset($context['format'])) {
117            $format = $context['format'];
118            unset($context['format']);
119        } else {
120            $format = 'text';
121        }
122
123        switch ($format) {
124            case 'json':
125                $messageContext = json_encode($context);
126                break;
127            default:
128                foreach ($context as $key => $value) {
129                    if (is_array($value)) {
130                        $value = '[Array]';
131                    }
132                    if (is_object($value)) {
133                        $value = '[Object]';
134                    }
135                    $messageContext .= (string)$key . '=' . (string)$value . ';';
136                }
137        }
138
139        return $messageContext;
140    }
141
142}