|
1 | 1 | # Debug Logger PHP |
2 | 2 |
|
3 | | -Простой логгер, cохраняющий отладочную информацию в файл. |
| 3 | +Простой логгер на PHP7+, сохраняющий отладочную информацию в файл вместе с данными об объеме используемой оперативной памяти и прошедшем времени. |
| 4 | + |
| 5 | +[](https://packagist.org/packages/andrey-tech/debug-logger-php) |
| 6 | +[](https://packagist.org/packages/andrey-tech/debug-logger-php) |
| 7 | +[](https://packagist.org/packages/andrey-tech/debug-logger-php) |
| 8 | + |
4 | 9 |
|
5 | 10 | # Содержание |
6 | 11 |
|
7 | 12 | <!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" --> |
8 | 13 |
|
9 | 14 | - [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) |
10 | 15 | - [Установка](#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0) |
11 | | -- [Класс `\App\DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger) |
| 16 | +- [Класс `DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-debuglogger) |
12 | 17 | - [Методы класса](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0) |
13 | 18 | - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B) |
14 | 19 | - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B) |
| 20 | + - [Пример результатов логирования](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%BE%D0%B2-%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) |
| 21 | + - [Формат логирования](#%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) |
15 | 22 | - [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80) |
16 | 23 | - [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F) |
17 | 24 |
|
|
20 | 27 | <a id="%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></a> |
21 | 28 | ## Требования |
22 | 29 |
|
23 | | -- PHP >= 7.0. |
| 30 | +- PHP >= 7.0; |
24 | 31 | - Произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/). |
25 | 32 |
|
26 | 33 | <a id="%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0"></a> |
27 | 34 | ## Установка |
28 | 35 |
|
29 | 36 | Установка через composer: |
30 | 37 | ``` |
31 | | -$ composer require andrey-tech/debug-logger-php |
| 38 | +$ composer require andrey-tech/debug-logger-php:"^2.0" |
32 | 39 | ``` |
33 | 40 |
|
34 | 41 | или добавить |
35 | 42 |
|
36 | 43 | ``` |
37 | | -"andrey-tech/debug-logger-php" |
| 44 | +"andrey-tech/debug-logger-php": "^2.0" |
38 | 45 | ``` |
39 | 46 |
|
40 | 47 | в секцию require файла composer.json. |
41 | 48 |
|
42 | | -<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger"></a> |
43 | | -## Класс `\App\DebugLogger` |
| 49 | +<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-debuglogger"></a> |
| 50 | +## Класс `DebugLogger` |
44 | 51 |
|
45 | | -Класс `\App\DebugLogger` обеспечивает логирование отладочной информации в файл. |
46 | | -При возникновении ошибок выбрасывается исключение с объектом класса `\App\AppException`. |
| 52 | +Класс `\App\DebugLogger\DebugLogger` обеспечивает логирование отладочной информации в файл. |
| 53 | +При возникновении ошибок выбрасывается исключение класса `\App\DebugLogger\DebugLoggerException`. |
47 | 54 |
|
48 | 55 | <a id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0"></a> |
49 | 56 | ### Методы класса |
50 | 57 |
|
51 | | -- `static instance(string $logFileName = 'debug.log') :\App\DebugLogger` |
52 | | - Возвращает единственный объект класса для заданного лог-файла `$logFileName`. |
| 58 | +- `static instance(string $logFileName = 'debug.log') :self` |
| 59 | + Возвращает единственный объект данного класса **для заданного лог-файла** `$logFileName`. |
53 | 60 | + `$logFileName` - имя лог-файла. |
54 | | -- `save(mixed $info, $object = null) :void` Сохраняет подлежащую логированию информацию в файл. |
55 | | - + $info - строка, массив или объект для логирования; |
56 | | - + $object - ссылка на объект класса в котором выполняется логирование. |
| 61 | +- `save(mixed $info, object $object = null, string $header = null) :void` Сохраняет подлежащую логированию информацию в файл. |
| 62 | + + `$info` - строка, массив или объект для логирования; |
| 63 | + + `$object` - ссылка на объект класса в котором выполняется логирование; |
| 64 | + + `$header` - строка заголовка для сохраняемой в лог файл информации. |
57 | 65 |
|
58 | 66 | <a id="%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B"></a> |
59 | 67 | ### Дополнительные параметры |
60 | 68 |
|
61 | | -Дополнительные параметры устанавливаются через публичные свойства объекта класса `\App\DebugLogger`: |
| 69 | +Дополнительные параметры устанавливаются через публичные свойства класса `\App\DebugLogger\DebugLogger`: |
| 70 | + |
| 71 | +Нестатическое свойство | По умолчанию | Описание |
| 72 | +----------------------- | ------------- | -------- |
| 73 | +`$isActive` | false | Включает или выключает логирование для конкретного файла, задаваемого параметром `$logFileName` метода `instance()` |
62 | 74 |
|
63 | | -Свойство | По умолчанию | Описание |
| 75 | +Статическое свойство | По умолчанию | Описание |
64 | 76 | ----------------------- | ------------- | -------- |
65 | | -`$isActive` | false | Включает или выключает логирование |
66 | 77 | `$logFileDir` | `temp/` | Устанавливает каталог, в котором сохраняются лог-файлы |
| 78 | +`mkdirMode` | 0755 | Устанавливает режим доступа для создаваемых каталогов для хранения лог файлов в виде восьмеричного числа |
| 79 | +`$uniqIdLength` | 7 | Длина уникального буквенно-цифрового [a-z0-9]+ идентификатора объекта класса `DebugLogger` для сохранения в лог файле, позволяющего находить записи, созданные одним и тем же процессом |
| 80 | + |
67 | 81 |
|
68 | 82 | <a id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B"></a> |
69 | 83 | ### Примеры |
70 | 84 |
|
71 | 85 | ```php |
72 | | -use \App\DebugLogger; |
| 86 | +use App\DebugLogger\DebugLogger; |
| 87 | +use App\DebugLogger\DebugLoggerException; |
73 | 88 |
|
74 | 89 | try { |
75 | | - $logFileName = 'debug_extensions.log' |
76 | | - $logger = DebugLogger::instance($logFileName); |
77 | | - |
78 | 90 | // Устанавливаем каталог для сохранения лог-файлов |
79 | | - $logger->logFileDir = 'logs/'; |
| 91 | + DebugLogger::$logFileDir = 'logs/'; |
| 92 | + |
| 93 | + $logFileName = 'debug_extensions.log'; |
| 94 | + $logger = DebugLogger::instance($logFileName); |
80 | 95 |
|
81 | 96 | // Включаем логирование |
82 | 97 | $logger->isActive = true; |
83 | 98 |
|
84 | | - // Сохраняем информацию о всех скомпилированных и загруженных модулях |
85 | | - $logger->save(get_loaded_extensions()); |
| 99 | + // Сохраняем информацию о всех скомпилированных и загруженных модулях PHP |
| 100 | + $logger->save(get_loaded_extensions(), null, 'PHP modules'); |
86 | 101 |
|
87 | | - // Сохраняем версию движка Zend |
88 | | - $logger->save(zend_version()); |
| 102 | + // Сохраняем версию движка Zend PHP |
| 103 | + $logger->save(zend_version(), null, 'Zend engine'); |
89 | 104 |
|
90 | | -} catch (\App\AppException $e) { |
| 105 | +} catch (DebugLoggerException $e) { |
91 | 106 | printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); |
92 | 107 | } |
93 | 108 | ``` |
94 | 109 |
|
95 | | -Пример результатов логирования: |
| 110 | +<a id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%BE%D0%B2-%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></a> |
| 111 | +### Пример результатов логирования |
96 | 112 |
|
97 | 113 | ``` |
98 | | -*** ytoqjz5 [2020-06-14 12:57:18,420258 +00:00 Δ- s, 0.69/2.00 MiB] ******************** |
| 114 | +*** ytoqjz5 [2020-06-14 12:57:18.420258 +00:00 Δ- s, 0.69/2.00 MiB] ******************** |
| 115 | +PHP modules |
99 | 116 | [ |
100 | 117 | "Core", |
101 | 118 | "bcmath", |
102 | 119 | "calendar", |
103 | 120 | "ctype" |
104 | 121 | ] |
105 | 122 |
|
106 | | -*** ytoqjz5 [2020-06-14 12:57:18,421359 +00:00 Δ0.001101 s, 0.69/2.00 MiB] ******************** |
| 123 | +*** ytoqjz5 [2020-06-14 12:57:18.421359 +00:00 Δ0.001101 s, 0.69/2.00 MiB] ******************** |
| 124 | +Zend engine |
107 | 125 | 3.2.0 |
108 | 126 | ``` |
109 | 127 |
|
110 | | -Формат заголовков логирования: |
| 128 | +<a id="%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></a> |
| 129 | +#### Формат логирования |
111 | 130 |
|
112 | | -- `*** ytoqjz5 [2020-06-14 12:57:18,421359 +00:00 Δ0.001101 s, 0.69/2.00 MiB] ********************` |
113 | | - + `ytoqjz5` - уникальный идентификатор объекта класса '\App\DebugLogger'; |
114 | | - + `2020-06-14 12:57:18,421359 +00:00` - время сохранения информации; |
115 | | - + `Δ0.001101 s` - время, прошедшее с момента предыдущего сохранения информации; |
116 | | - + `0.69/2.00 MiB` - максимальный объем памяти, который был выделен PHP-скрипту / реальный объем памяти, выделенный системой. |
| 131 | +``` |
| 132 | +*** ytoqjz5 [2020-06-14 12:57:18,421359 +00:00 Δ0.001101 s, 0.69/2.00 MiB] ******************** |
| 133 | +Zend engine |
| 134 | +3.2.0 |
| 135 | +``` |
117 | 136 |
|
| 137 | +- `ytoqjz5` - уникальный буквенно-цифровой [a-z0-9]+ идентификатор объекта класса `DebugLogger`, позволяющий находить в лог файле записи, созданные одним и тем же процессом; |
| 138 | +- `2020-06-14 12:57:18.421359 +00:00` - дата и время сохранения информации с точностью до микросекунд; |
| 139 | +- `Δ0.001101 s` - время, прошедшее с момента предыдущего сохранения информации в секундах и микросекундах; |
| 140 | +- `0.69/2.00 MiB` - данные об используемой оперативной памяти в единицах количества информации с [двоичными приставками](https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8): |
| 141 | + + `0.69` - максимальный объем памяти, который был выделен PHP-скрипту системой; |
| 142 | + + `2.00` - реальный объем памяти, выделенный PHP-скрипту системой; |
| 143 | +- 'Zend engine' - заголовок для сохраняемой информации, задаваемый параметром `$header` метода `save()`; |
| 144 | +- '3.2.0' - сохраняемая информация, задаваемая параметром `$info` метода `save()`. |
| 145 | + |
118 | 146 | <a id="%D0%90%D0%B2%D1%82%D0%BE%D1%80"></a> |
119 | 147 | ## Автор |
120 | 148 |
|
121 | | -© 2019-2020 andrey-tech |
| 149 | +© 2019-2021 andrey-tech |
122 | 150 |
|
123 | 151 | <a id="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F"></a> |
124 | 152 | ## Лицензия |
|
0 commit comments