Задать вопрос
Hackerman1
@Hackerman1
17 лет, плохое зрение.

Как получать трейсбек в infinity_polling telebot?

У меня есть бот на телеботе и мне нужно, чтобы он в логи отправлял полную строку с трейсбеком, но он этого не делает. Мне в чате по телеботу сказали сделать дебаг лвл везде, но он по прежнему не отправляет мне трейсбек, только само сообщение об ошибке.
Код логов, который работал 1.5 года назад

log_dir = r'/root/WorkFolder/logs/'

if not os.path.exists(log_dir):
    os.mkdir(log_dir)

# Создаем объект логгера
logger = logging.getLogger("Bot Logger")
logger.setLevel(logging.DEBUG)  

# Создаем обработчик RotatingFileHandler для записи логов в файлы по дням
logname = os.path.join(log_dir, "Roblox_bot_log.log")
handler = TimedRotatingFileHandler(logname, when="midnight", backupCount=10)
handler.suffix = "%Y%m%d"
handler.setLevel(logging.DEBUG)

# Форматируем сообщения логов

BASEDTFORMAT = "%d.%m.%y %H:%M:%S"
FLN = "[%(levelname)s  %(asctime)s] [%(name)s] - %(funcName)s %(threadName)s " \
  "%(filename)s:%(lineno)d: "
FLNC = "%(filename)s:%(lineno)04d: %(funcName)-12s %(threadName)s " \
  "%(levelname)9s %(asctime)s\n"
MSG = "%(message)s"


formatter = logging.Formatter(FLN + MSG, BASEDTFORMAT)
handler.setFormatter(formatter)

# Добавляем обработчик в логгер
logger.addHandler(handler)
telebot_logger.addHandler(handler)
telebot_logger.setLevel(logging.DEBUG)

logger.info("Logger initialized")

...


Текущий результат логов (Неудовлетворительный)

[ERROR  02.01.25 13:32:14] [TeleBot] - _run_middlewares_and_handler WorkerThread1 __init__.py:9227: name 'refferer' is not defined

Я в тупике. Я не знаю, как мне выбить из него трейсбек. Если я ставлю дебаг, то сыпет много лишнего и по прежнему не даёт трейсбеки.
  • Вопрос задан
  • 246 просмотров
Подписаться 2 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
@randomDanila
Весь код закидываете в блок try, после него ставите except.
Схема кода:

try:
    #Ваш код бота
except Exception as error:
    #Записываем в файл
    with open('файл_для_лога', 'a') as log_file:
        print(error, file=log_file)

Прошу не серчать, если я не понял ваш вопрос
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы