File size: 818 Bytes
1330e26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import logging
import threading
import queue
import sys

class StreamlitLogHandler(logging.Handler):
    def __init__(self, log_queue):
        super().__init__()
        self.log_queue = log_queue

    def emit(self, record):
        msg = self.format(record)
        self.log_queue.put(msg)

def setup_logging_to_queue(log_queue):
    handler = StreamlitLogHandler(log_queue)
    handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
    logger = logging.getLogger()
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)
    return handler

class StdoutRedirector:
    def __init__(self, log_queue):
        self.log_queue = log_queue

    def write(self, string):
        if string.strip():
            self.log_queue.put(string.strip())

    def flush(self):
        pass