From 2801dc341b6b63515cd244a94062d79d8b75d414 Mon Sep 17 00:00:00 2001 From: henok3878 Date: Fri, 7 Nov 2025 15:51:56 -0500 Subject: [PATCH] add resusable file logger helper method --- nanochat/common.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/nanochat/common.py b/nanochat/common.py index b27bec0..bd0c75c 100644 --- a/nanochat/common.py +++ b/nanochat/common.py @@ -38,12 +38,32 @@ class ColoredFormatter(logging.Formatter): def setup_default_logging(): handler = logging.StreamHandler() + handler.setLevel(logging.INFO) handler.setFormatter(ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) logging.basicConfig( level=logging.INFO, handlers=[handler] ) +def setup_file_logger(logger_name, filename, level=logging.DEBUG, formatter=None): + clean_name = os.path.basename(filename) + if clean_name != filename or not clean_name: + raise ValueError(f"Invalid log filename provided: {filename}") + if not clean_name.endswith(".log"): + clean_name += ".log" + logs_dir = get_logs_dir() + path = os.path.join(logs_dir, clean_name) + + handler = logging.FileHandler(path, mode="w") + handler.setLevel(level) + handler.setFormatter( + formatter + or ColoredFormatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") + ) + logger = logging.getLogger(logger_name) + logger.addHandler(handler) + return path + setup_default_logging() logger = logging.getLogger(__name__)