如何使日志记录处理程序记录到flask-socketio

时间:2020-08-21 19:22:58

标签: python flask logging flask-socketio

我想通过将记录通过处理程序创建的记录通过Flask SocketIO套接字传递给网页(即,将在控制台上获得的相同日志消息打印到网页上)。

我看到有许多handlers可用,但是似乎没有一个适合这种情况。也许我需要一个自定义处理程序?

remap_pfn_range

更新:

据我所知,class MessagePaneHandler: # some log data is received socketio.emit("event_name", log_message_from_handler, namespace="/some_namespace", broadcast=True) 写入原始TCP套接字。我可以使用logging.handlers.SocketHandler来写入Flask SocketIO套接字吗?如果可以,怎么办?

如果有帮助,这就是我在前端设置套接​​字的方式:

logging.handlers.SocketHandler

1 个答案:

答案 0 :(得分:0)

据我所知,没有内置处理程序执行此操作。这个自定义处理程序帮了我大忙:


from flask_socketio import SocketIO
socketio = SocketIO()

class SocketIOHandler(logging.Handler):
    """A logging handler that emits records with SocketIO."""

    def __init__(self):
        super().__init__()

    def emit(self, record):
        asctime = record.__dict__["asctime"]
        msecs = record.__dict__["msecs"]
        levelname = record.__dict__["levelname"]
        module = record.__dict__["module"]
        message = record.__dict__["message"]
        msg = f"{asctime}.{round(msecs):03} [{levelname:<5.5s}]  {module:<18s}  {message}"
        socketio.emit("update_message_box", msg, namespace="/printing", broadcast=True)