### че это
пример простейшего логгера, который будет выводить логги в консоль и записывать их в лог-файл.

содержит пример обработки строк:
    
- удаление из логов токенов телеграм-ботов
- исключение из логгирования `getUpdates` и `sendChatAction`
- подсветка цветами разных событий и уровней логгирования в консоли (и в html-логе)

может создать html-файл для удобного просмотра последнего лога

### как использовать:

сначала установить:  `pip install prlps-logger`

пример использования:

```python
import os
# импортируем библиотеку:
from prlps_logger import Logger

# указываем путь до файла с логами куда будет все записываться:
current_py_file = os.path.abspath(__file__)  # путь до текущего файла 
workdir = os.path.dirname(current_py_file)  # путь до рабочей папки с этим файлом
os.makedirs(os.path.join(workdir, "logs"), exist_ok=True)  # создание папки для логов
log_file_name = f"{os.path.splitext(os.path.basename(current_py_file))[0]}_{os.path.basename(os.path.dirname(current_py_file))}.log"  # создание имени для файла логов
log_file = os.path.join(workdir, "logs", log_file_name)  # установка пути до файла логов
# код выше можно пропустить и указать любой путь до файла где будут логи (создавать его не нужно):
# log_file = "C:/Users/User/Desktop/logfile.txt"

# создание экземпляра класса с нужным уровнем логгирования:
logger = Logger(log_file, 'DEBUG')
# уровень логгирования можно не указывать, тогда по умолчанию будет 'WARN':
# logger = Logger(log_file)

# предположим далее какой-то твой код
# если в коде возникнет не перехваченное исключение, то оно с трейсбеком будет записано в файл логов и выведено в консоль
# для подробного логгирования ты можешь сам вызывать логгер с нужным уровнем в необходимых участках кода:

logger.warn('https://api.telegram.org/bot123232324234/ неправильный токен!')
logger.error('https://api.telegram.org/bot856764534234/ ошибка соединенеия')
logger.info('получен ответ от api: {response}')
logger.crit('https://api.telegram.org/bot856764534234/ flood control')
logger.event('результаты получены: {results}')

try:
    my_iq = ((0 + 0) * 0) ** 0 / 0
except Exception as e:
    # тут твоя какая-то обработка исключения...
    logger.error(f'ты больной?\n{e}') # логгирование

# посмотрим как логгируются не обработанные исключения:
# my_iq = ((0 + 0) * 0) ** 0 / 0

# лог (только созданный этим логгером) можно передать в виде html-файла для удобного просмотра или вывода куда-то, например на страницу через fastapi и т.п.
html_log = logger.log_to_html()  # создаст файл для текущего лога, аналогично вызову logger.log_to_html(log_file)
# или создать html-файл с указанием пути до конкретного лог-файла, не обязательно текущего
# html_log = logger.log_to_html(log_file)  # для текущего лога
# html_log = logger.log_to_html('/path/to/file.log.3')  # для какого-то другого лог-файла, например после ротации логов
# метод возвращает полный путь до созданного файла html, можно посмотреть или потом что-то с этим сделать:
print(html_log)
```

играйся 😊
