11import json
2+ import logging
23import os
34from dataclasses import dataclass
45from typing import Dict , List
@@ -97,13 +98,28 @@ def load() -> "Config":
9798 load_dotenv ()
9899 get = Config ._get_required_env_var
99100
101+ # Initialize logger
102+ log_level_name = get ("LOG_LEVEL" ).lower ()
103+ log_levels = {
104+ "debug" : 10 ,
105+ "info" : 20 ,
106+ "warning" : 30 ,
107+ "error" : 40 ,
108+ "critical" : 50 ,
109+ }
110+ if log_level_name not in log_levels :
111+ raise ValueError (
112+ f"Invalid LOG_LEVEL: '{ log_level_name } '. Must be one of: { ', ' .join (log_levels )} "
113+ )
114+ log_level = log_levels [log_level_name ]
115+ logging .basicConfig (level = log_level )
116+ logger = logging .getLogger (__name__ )
117+ logger .debug ("Logging initialized at level: %s" , log_level_name .upper ())
118+
119+ # Initialize db
100120 db_type = get ("DB_TYPE" )
101121 db_provider = Config ._init_db_provider (db_type )
102122
103- chunk_size = int (get ("CHUNK_SIZE" ))
104- chunk_overlap = int (get ("CHUNK_OVERLAP" ))
105- temp_dir = get ("TEMP_DIR" )
106-
107123 # Web URLs
108124 web_sources_raw = get ("WEB_SOURCES" )
109125 try :
@@ -118,20 +134,10 @@ def load() -> "Config":
118134 except json .JSONDecodeError as e :
119135 raise ValueError (f"Invalid REPO_SOURCES JSON: { e } " ) from e
120136
121- # Logging
122- log_level_name = get ("LOG_LEVEL" ).lower ()
123- log_levels = {
124- "debug" : 10 ,
125- "info" : 20 ,
126- "warning" : 30 ,
127- "error" : 40 ,
128- "critical" : 50 ,
129- }
130- if log_level_name not in log_levels :
131- raise ValueError (
132- f"Invalid LOG_LEVEL: '{ log_level_name } '. Must be one of: { ', ' .join (log_levels )} "
133- )
134- log_level = log_levels [log_level_name ]
137+ # Misc
138+ chunk_size = int (get ("CHUNK_SIZE" ))
139+ chunk_overlap = int (get ("CHUNK_OVERLAP" ))
140+ temp_dir = get ("TEMP_DIR" )
135141
136142 return Config (
137143 db_provider = db_provider ,
0 commit comments