Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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日志模块在dictConfig文件中设置自定义日志处理程序_Python_Heroku_Logging - Fatal编程技术网

如何使用python日志模块在dictConfig文件中设置自定义日志处理程序

如何使用python日志模块在dictConfig文件中设置自定义日志处理程序,python,heroku,logging,Python,Heroku,Logging,我是开发新手,面临下一个问题。 我编写了一个自定义日志处理程序,并将其保存到单独的模块中。我尝试在dictConfig中将此处理程序设置为处理程序的类,并且它在localhost上正常工作,但当我在Heroku上运行它时,它会引发ValueError,并显示消息“无法配置处理程序‘send_to_telegram_处理程序’:‘NoneType’对象不可设置” 代码如下: # logging_handlers.py import os import logging import telegra

我是开发新手,面临下一个问题。
我编写了一个自定义日志处理程序,并将其保存到单独的模块中。我尝试在dictConfig中将此处理程序设置为处理程序的类,并且它在localhost上正常工作,但当我在Heroku上运行它时,它会引发ValueError,并显示消息“无法配置处理程序‘send_to_telegram_处理程序’:‘NoneType’对象不可设置”

代码如下:

# logging_handlers.py

import os
import logging
import telegram


class SendToTelegramHandler(logging.Handler):
    def __init__(self):
        super().__init__()
        self.bot = telegram.Bot(token=os.getenv('TELEGRAM_BOT_TOKEN'))

    def emit(self, record):
        log_entry = self.format(record)
        self.bot.send_message(chat_id=os.getenv('TELEGRAM_CHAT_ID'), text=log_entry)


我想问题在于使用自定义类作为日志处理程序,但我不明白为什么它可以在本地主机上工作,而不能在Heroku上工作。因此,问题已经解决。

相关代码提到了
logging\u handler.py
文件名,但配置使用了
logging\u handler
。感谢您的注意。评论中有个错误。实际上,文件名是
logging\u handlers.py
。我会改正的。除此之外,列出的代码没有问题。你能提供完整的错误跟踪吗?有些东西是
None
,但不清楚是什么,可能是
telegrame\u BOT\u TOKEN
env var未设置。感谢您向我指出这一点。是的,Heroku上配置变量中的Telegrame\u BOT\u令牌keyname有错误。所以,问题解决了。
# settings.py

import logging_handlers

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },
    },
    'handlers': {
        'send_to_telegram_handler': {
            'level': 'WARNING',
            'formatter': 'standard',
            'class': 'logging_handlers.SendToTelegramHandler',
        },
    },
    'loggers': {
        'telegram_bot': {
            'handlers': ['send_to_telegram_handler'],
            'level': 'WARNING'
        },
        'dialogflow': {
            'handlers': ['send_to_telegram_handler'],
            'level': 'WARNING'
        },
    }
}