MCPcopy
hub / github.com/lm-sys/FastChat / build_logger

Function build_logger

fastchat/utils.py:25–80  ·  view source on GitHub ↗
(logger_name, logger_filename)

Source from the content-addressed store, hash-verified

23
24
25def build_logger(logger_name, logger_filename):
26 global handler
27
28 formatter = logging.Formatter(
29 fmt="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
30 datefmt="%Y-%m-%d %H:%M:%S",
31 )
32
33 # Set the format of root handlers
34 if not logging.getLogger().handlers:
35 if sys.version_info[1] >= 9:
36 # This is for windows
37 logging.basicConfig(level=logging.INFO, encoding="utf-8")
38 else:
39 if platform.system() == "Windows":
40 warnings.warn(
41 "If you are running on Windows, "
42 "we recommend you use Python >= 3.9 for UTF-8 encoding."
43 )
44 logging.basicConfig(level=logging.INFO)
45 logging.getLogger().handlers[0].setFormatter(formatter)
46
47 # Redirect stdout and stderr to loggers
48 stdout_logger = logging.getLogger("stdout")
49 stdout_logger.setLevel(logging.INFO)
50 sl = StreamToLogger(stdout_logger, logging.INFO)
51 sys.stdout = sl
52
53 stderr_logger = logging.getLogger("stderr")
54 stderr_logger.setLevel(logging.ERROR)
55 sl = StreamToLogger(stderr_logger, logging.ERROR)
56 sys.stderr = sl
57
58 # Get logger
59 logger = logging.getLogger(logger_name)
60 logger.setLevel(logging.INFO)
61
62 # Avoid httpx flooding POST logs
63 logging.getLogger("httpx").setLevel(logging.WARNING)
64
65 # if LOGDIR is empty, then don't try output log to local file
66 if LOGDIR != "":
67 os.makedirs(LOGDIR, exist_ok=True)
68 filename = os.path.join(LOGDIR, logger_filename)
69 handler = logging.handlers.TimedRotatingFileHandler(
70 filename, when="D", utc=True, encoding="utf-8"
71 )
72 handler.setFormatter(formatter)
73
74 for l in [stdout_logger, stderr_logger, logger]:
75 if l in visited_loggers:
76 continue
77 visited_loggers.add(l)
78 l.addHandler(handler)
79
80 return logger
81
82

Callers 12

model_worker.pyFile · 0.90
controller.pyFile · 0.90
__init__Method · 0.90
api_provider.pyFile · 0.90
monitor.pyFile · 0.90

Calls 1

StreamToLoggerClass · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…