Логирование ошибок telebot в журнал journald
Есть бот, построенный на вебхуках. В качестве отладки ошибок используется journald (journalctl).
Бот построен на uvicorn, и веб-сервер вызывается непосредственно из точки входа "__main__". Там же я и указываю параметром, что нужно выводить все логи в журнал.
Иногда, когда бот выводит предупреждение, по типу что сообщение для редактирования не было найдено, или не был, к примеру, найден файл с таким идентификатором - то в консоли PyCharm обычно появлялось красное предупреждение.
Да и когда бот работал на getUpdates на сервере - эти предупреждения показывались в журнале. А после того как я поднял веб-сервер - данные сообщения не отображаются в журнале, что и есть для меня проблемой.
Журнал смотрю командой journalctl -u bot --since=-1h
...
if __name__ == '__main__':
# bot.polling(none_stop=True)
uvicorn.run(app=app,
host=config.HOST,
port=config.PORT,
access_log=True,
# log_level='info', - это выводит всю информацию, но не предупреждения
ssl_keyfile='pkey.pem',
ssl_certfile='cert.pem')
Я пробовал указывать запуск systemd bot.service с флагом
ExecStart=/usr/lib/python3 -u /home/myname/bot/bot_example.py
но предупреждение до сих пор не выводится в логах.
Что можно предпринять? Я хочу, чтоб предупреждения выводились ИМЕННО в журнал journalctl.
UPD.
Я уже пробовал и такой способ:
import logging
from telebot import logger
logger.addHandler(logging.FileHandler('log.txt'))
В PyCharm на Windows результат записывается в файл, а вот на сервере Ubuntu - нет. С чем связано такое логирование?
Пробовал добавлять и flush к sys.stderr в логгере в исходниках pytelegrambotapi - безрезультатно
UPD2.
Нашел способ добавить логгер непосредственно в uvicorn, но работает он только в режиме DEBUG, а вот в режиме ERROR почему-то пропускает ошибки. Как это можно решить?
log_config = uvicorn.config.LOGGING_CONFIG
log_config['loggers'].update({"TeleBot": {"handlers": ["access"], "level": "ERROR"}})