Skip to content

Commit f9f9819

Browse files
committed
Initial commit
0 parents  commit f9f9819

File tree

6 files changed

+413
-0
lines changed

6 files changed

+413
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2019-2020 andrey-tech
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# Debug Logger PHP
2+
3+
Простой логгер, cохраняющий отладочную информацию в файл.
4+
5+
# Содержание
6+
7+
<!-- MarkdownTOC levels="1,2,3,4,5,6" autoanchor="true" autolink="true" -->
8+
9+
- [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
10+
- [Установка](#%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)
12+
- [Методы класса](#%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+
- [Дополнительные параметры](#%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+
- [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B)
15+
- [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80)
16+
- [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)
17+
18+
<!-- /MarkdownTOC -->
19+
20+
<a id="%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></a>
21+
## Требования
22+
23+
- PHP >= 7.0.
24+
- Произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/).
25+
26+
<a id="%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0"></a>
27+
## Установка
28+
29+
Установка через composer:
30+
```
31+
$ composer require andrey-tech/debug-logger-php
32+
```
33+
34+
или добавить
35+
36+
```
37+
"andrey-tech/debug-logger-php"
38+
```
39+
40+
в секцию require файла composer.json.
41+
42+
<a id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appdebuglogger"></a>
43+
## Класс `\App\DebugLogger`
44+
45+
Класс `\App\DebugLogger` обеспечивает логирование отладочной информации в файл.
46+
При возникновении ошибок выбрасывается исключение с объектом класса `\App\AppException`.
47+
48+
<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+
### Методы класса
50+
51+
- `static instance(string $logFileName = 'debug.log') :\App\DebugLogger`
52+
Возвращает единственнный объект класса для заданного лог-файла `$logFileName`.
53+
+ `$logFileName` - имя лог-файла.
54+
- `save(mixed $info, $object = null) :void` Сохраняет подлежащую логированию информацию в файл.
55+
+ $info - строка, массив или объект для логирования;
56+
+ $object - ссылка на объект класса в котором выполняется логирование.
57+
58+
<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+
### Дополнительные параметры
60+
61+
Дополнительные параметры устанавливаются через публичные свойства объекта класса `\App\DebugLogger`:
62+
63+
Свойство | По умолчанию | Описание
64+
----------------------- | ------------- | --------
65+
`$isActive` | false | Включает или выключает логирование
66+
`$logFileDir` | `temp/` | Устанавливает каталог, в котором сохраняются лог-файлы
67+
68+
<a id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B"></a>
69+
### Примеры
70+
71+
```php
72+
use \App\DebugLogger;
73+
74+
try {
75+
$logFileName = 'debug_extensions.log'
76+
$logger = DebugLogger::instance($logFileName);
77+
78+
// Устанавливаем каталог для сохранения лог-файлов
79+
$logger->logFileDir = 'logs/';
80+
81+
// Включаем логирование
82+
$logger->isActive = true;
83+
84+
// Сохраняем информацию о всех скомпилированных и загруженных модулях
85+
$logger->save(get_loaded_extensions());
86+
87+
// Сохраняем версию движка Zend
88+
$logger->save(zend_version());
89+
90+
} catch (\App\AppException $e) {
91+
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
92+
}
93+
```
94+
95+
Пример результатов логирования:
96+
97+
```
98+
*** ytoqjz5 [2020-06-14 12:57:18,420258 +00:00 Δ- s, 0.69/2.00 MiB] ********************
99+
[
100+
"Core",
101+
"bcmath",
102+
"calendar",
103+
"ctype"
104+
]
105+
106+
*** ytoqjz5 [2020-06-14 12:57:18,421359 +00:00 Δ0.001101 s, 0.69/2.00 MiB] ********************
107+
3.2.0
108+
```
109+
110+
Формат заголовков логирования:
111+
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-скрипту / реальный объем памяти, выделенный системой.
117+
118+
<a id="%D0%90%D0%B2%D1%82%D0%BE%D1%80"></a>
119+
## Автор
120+
121+
© 2019-2020 andrey-tech
122+
123+
<a id="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F"></a>
124+
## Лицензия
125+
126+
Данная библиотека распространяется на условиях лицензии [MIT](./LICENSE).

composer.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "andrey-tech/debug-logger-php",
3+
"description": "Простой логгер, cохраняющий отладочную информацию в файл",
4+
"keywords": [ "logger", "debug" ],
5+
"homepage": "https://github.com/andrey-tech/debug-logger-php",
6+
"minimum-stability": "stable",
7+
"license": "MIT",
8+
"authors": [
9+
{
10+
"name": "andrey-tech",
11+
"homepage": "https://github.com/andrey-tech/",
12+
"role": "Developer"
13+
}
14+
],
15+
"require": {
16+
"php": ">=7.0"
17+
},
18+
"autoload": {
19+
"psr-4": {
20+
"App\\": "src/App"
21+
}
22+
}
23+
}

src/App/AppException.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
/**
4+
* Обработчик исключений к классах пространства имен \App
5+
*
6+
* @author andrey-tech
7+
* @copyright 2019-2020 andrey-tech
8+
* @see https://github.com/andrey-tech/debug-logger-php
9+
* @license MIT
10+
*
11+
* @version 1.0.1
12+
*
13+
* v1.0.0 (28.05.2019) Начальный релиз
14+
* v1.0.1 (26.06.2019) Изменения для пространства имен \App
15+
*
16+
*/
17+
18+
declare(strict_types = 1);
19+
20+
namespace App;
21+
22+
class AppException extends \Exception
23+
{
24+
/**
25+
* Конструктор
26+
* @param string $message Сообщение об исключении
27+
* @param int $code Код исключения
28+
* @param \Exception|null $previous Предыдущее исключение
29+
*/
30+
public function __construct(string $message = '', $code = 0, \Exception $previous = null)
31+
{
32+
parent::__construct("App: " . $message, $code, $previous);
33+
}
34+
}

0 commit comments

Comments
 (0)