From 56ca37fd8bb95e27baca7f396a4ea385e67d3638 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 20:15:02 +0200 Subject: [PATCH] Also provide stacktrace via log endpoints --- freqtrade/rpc/rpc.py | 3 ++- freqtrade/rpc/telegram.py | 13 ++++++++----- tests/rpc/test_rpc_telegram.py | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 59c6acafa..b7a4f4f8c 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -640,7 +640,8 @@ class RPC: else: buffer = bufferHandler.buffer records = [[datetime.fromtimestamp(r.created).strftime("%Y-%m-%d %H:%M:%S"), - r.created, r.name, r.levelname, r.message] + r.created, r.name, r.levelname, + r.message + ('\n' + r.exc_text if r.exc_text else '')] for r in buffer] return {'log_count': len(records), 'logs': records} diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 23c3e3689..a095714a7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -12,6 +12,7 @@ from tabulate import tabulate from telegram import ParseMode, ReplyKeyboardMarkup, Update from telegram.error import NetworkError, TelegramError from telegram.ext import CallbackContext, CommandHandler, Updater +from telegram.utils.helpers import escape_markdown from freqtrade.__init__ import __version__ from freqtrade.rpc import RPC, RPCException, RPCMessageType @@ -651,20 +652,22 @@ class Telegram(RPC): limit = 10 logs = self._rpc_get_logs(limit)['logs'] msgs = '' - msg_template = "*{}* {}: {} - `{}`" + msg_template = "*{}* {}: {} \\- `{}`" for logrec in logs: - msg = msg_template.format(logrec[0], logrec[2], logrec[3], logrec[4]) - + msg = msg_template.format(escape_markdown(logrec[0], version=2), + escape_markdown(logrec[2], version=2), + escape_markdown(logrec[3], version=2), + escape_markdown(logrec[4], version=2)) if len(msgs + msg) + 10 >= MAX_TELEGRAM_MESSAGE_LENGTH: # Send message immediately if it would become too long - self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN) + self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN_V2) msgs = msg + '\n' else: # Append message to messages to send msgs += msg + '\n' if msgs: - self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN) + self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN_V2) except RPCException as e: self._send_msg(str(e)) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index e0df31437..026a81ff8 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1124,8 +1124,8 @@ def test_telegram_logs(default_conf, update, mocker) -> None: context.args = [] telegram._logs(update=update, context=context) assert msg_mock.call_count == 1 - assert "freqtrade.rpc.telegram" in msg_mock.call_args_list[0][0][0] - assert "freqtrade.resolvers.iresolver" in msg_mock.call_args_list[0][0][0] + assert "freqtrade\\.rpc\\.telegram" in msg_mock.call_args_list[0][0][0] + assert "freqtrade\\.resolvers\\.iresolver" in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() context.args = ["1"]