Spaces:
Runtime error
Runtime error
from pathlib import Path | |
import logging | |
import gradio as gr | |
from gradio_log import Log | |
import logging | |
class CustomFormatter(logging.Formatter): | |
green = "\x1b[32;20m" | |
blue = "\x1b[34;20m" | |
yellow = "\x1b[33;20m" | |
red = "\x1b[31;20m" | |
bold_red = "\x1b[31;1m" | |
reset = "\x1b[0m" | |
format = "%(asctime)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)" | |
FORMATS = { | |
logging.DEBUG: blue + format + reset, | |
logging.INFO: green + format + reset, | |
logging.WARNING: yellow + format + reset, | |
logging.ERROR: red + format + reset, | |
logging.CRITICAL: bold_red + format + reset, | |
} | |
def format(self, record): | |
log_fmt = self.FORMATS.get(record.levelno) | |
formatter = logging.Formatter(log_fmt) | |
return formatter.format(record) | |
formatter = CustomFormatter() | |
log_file = "/tmp/gradio_log.txt" | |
Path(log_file).touch() | |
ch = logging.FileHandler(log_file) | |
ch.setLevel(logging.DEBUG) | |
ch.setFormatter(formatter) | |
logger = logging.getLogger("gradio_log") | |
logger.setLevel(logging.DEBUG) | |
for handler in logger.handlers: | |
logger.removeHandler(handler) | |
logger.addHandler(ch) | |
logger.info("The logs will be displayed in here.") | |
def create_log_handler(level): | |
def l(text): | |
getattr(logger, level)(text) | |
return l | |
with gr.Blocks() as demo: | |
text = gr.Textbox(label="Enter text to write to log file") | |
with gr.Row(): | |
for l in ["debug", "info", "warning", "error", "critical"]: | |
button = gr.Button(f"log as {l}") | |
button.click(fn=create_log_handler(l), inputs=text) | |
Log(log_file) | |
if __name__ == "__main__": | |
demo.launch() | |