Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/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 将控制台日志记录输出重定向到flask socketio_Python_Logging_Flask_Flask Socketio - Fatal编程技术网

Python 将控制台日志记录输出重定向到flask socketio

Python 将控制台日志记录输出重定向到flask socketio,python,logging,flask,flask-socketio,Python,Logging,Flask,Flask Socketio,我通过Pythonlogging模块将事件记录到控制台。 我还想通过套接字io(flask)将日志消息发送到客户端。 以下方法只取得了部分成功 从flask.ext.socketio导入发送 fmt_str='%(asctime)s-%(message)s' 格式化程序=logging.formatter(fmt_str) logging.basicConfig(level=logging.INFO,format=fmt\u str) logger=logging.getLogger(“”) 类

我通过Python
logging
模块将事件记录到控制台。 我还想通过套接字io(flask)将日志消息发送到客户端。 以下方法只取得了部分成功

从flask.ext.socketio导入发送
fmt_str='%(asctime)s-%(message)s'
格式化程序=logging.formatter(fmt_str)
logging.basicConfig(level=logging.INFO,format=fmt\u str)
logger=logging.getLogger(“”)
类SocketIOHandler(logging.Handler):
def排放(自我,记录):
发送(record.getMessage())
sio=SocketIOHandler()
logger.addHandler(sio)
我在浏览器中得到结果,但仍然得到

RuntimeError: working outside of request context

对于控制台上的每个发送调用。我认为发送调用的上下文不可用。。。解决这个问题的有效方法是什么?谢谢。

发送和发出函数都是上下文感知函数,只能在事件处理程序内部工作。等效的上下文无关函数可从
socketio
实例获得。示例(对您的应用程序做出一些假设,这些假设可能是真的,也可能不是真的):

第一行可能需要根据应用程序的结构进行调整,但这样应用程序将向所有客户端广播日志


希望这有帮助

谢谢你的回复。我以前也试过。这对我不起作用。。。
from app import socketio  # flask.ext.socketio.SocketIO instance

fmt_str = '%(asctime)s - %(message)s'
formatter = logging.Formatter(fmt_str)
logging.basicConfig(level=logging.INFO, format=fmt_str)

logger = logging.getLogger("")

class SocketIOHandler(logging.Handler):
    def emit(self, record):
        socketio.send(record.getMessage())

sio = SocketIOHandler()
logger.addHandler(sio)