Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 精确定位Django错误报告的日志消息_Python_Django_Python Telegram Bot - Fatal编程技术网

Python 精确定位Django错误报告的日志消息

Python 精确定位Django错误报告的日志消息,python,django,python-telegram-bot,Python,Django,Python Telegram Bot,我一直在尝试区分日志与生产服务器、开发服务器或本地服务器。我有python电报处理程序2.2,它通过bot向电报组聊天发送日志 当localhost代码被合并到开发分支(负责开发服务器)时,所有这些服务器中的代码都是相同的;当开发分支准备就绪时,它被合并到主分支(负责生产服务器)。有没有办法调整设置,以便电报日志告诉我们哪个服务器有错误?非常感谢 下面是settings目录中base.py的日志部分 设置/base.py LOGGING = { 'version': 1, 'di

我一直在尝试区分日志与生产服务器、开发服务器或本地服务器。我有python电报处理程序2.2,它通过bot向电报组聊天发送日志

当localhost代码被合并到开发分支(负责开发服务器)时,所有这些服务器中的代码都是相同的;当开发分支准备就绪时,它被合并到主分支(负责生产服务器)。有没有办法调整设置,以便电报日志告诉我们哪个服务器有错误?非常感谢

下面是settings目录中base.py的日志部分

设置/base.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        },
    },
    'formatters': {
        'simple_trace': {
            'format': '%(asctime)s,%(msecs)d %(levelname)-8s %(message)s',
        }
    },
    'handlers': {
        'telegram': {
            'class': 'telegram_handler.TelegramHandler',
            'token': '1489551033:AAHbIvspcVR5zcslrbrJ9qNK2yZ1at0yIMA',
            'chat_id': '-429967971',
            'formatter': 'simple_trace'
        }
    },
    'loggers': {
        '': {
            'handlers': ['telegram'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}
我还有一个中间件,它在响应为400或500时发送请求主体的日志

api/custommiddleware.py

import json
import logging
import base64
import http

from datetime import datetime


class ErrorCatchMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):

        try:
            jsonRequest = json.loads(request.body.decode('utf-8'))
        except Exception as e:
            jsonRequest = {}

        response = self.get_response(request)

        if (response.status_code == 400 or response.status_code == 500):

            logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s %(message)s',
            datefmt = '%Y-%m-%d:%H:%M:%S',
            level = logging.INFO
            )

            logger = logging.getLogger(__name__)
            logger.info({'request': jsonRequest})
            response_content = response.content
            logger.warning(response_content.decode('utf-8'))
            print(jsonRequest)
            print(response_content.decode('utf-8'))
            return response
        else:
            return response
我得到的日志如下所示。


如您所见,该文件没有说明此错误是发生在生产服务器、开发服务器还是本地主机中。我必须找出一种方法来区分在哪个服务器上发生此类错误。

您可以在相应的设置模块中覆盖格式化程序,如下所示:

设置/production.py

LOGGING['formatters']['simple_trace']['format'] = 'Production: %s'%LOGGING['formatters']['simple_trace']['format']