yangdx commited on
Commit
484b5a7
·
1 Parent(s): 26fe19c

Config log setting for very woker properly for Gunicorn mode.

Browse files
Files changed (1) hide show
  1. gunicorn_config.py +48 -12
gunicorn_config.py CHANGED
@@ -134,18 +134,54 @@ def post_fork(server, worker):
134
  Executed after a worker has been forked.
135
  This is a good place to set up worker-specific configurations.
136
  """
137
- # Set lightrag logger level in worker processes using gunicorn's loglevel
138
- from lightrag.utils import logger
139
-
140
- logger.setLevel(loglevel.upper())
141
-
142
- # Disable uvicorn.error logger in worker processes
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  uvicorn_error_logger = logging.getLogger("uvicorn.error")
144
- uvicorn_error_logger.setLevel(logging.CRITICAL)
145
  uvicorn_error_logger.handlers = []
 
146
  uvicorn_error_logger.propagate = False
147
-
148
- # Add log filter to uvicorn.access handler in worker processes
149
- uvicorn_access_logger = logging.getLogger("uvicorn.access")
150
- path_filter = LightragPathFilter()
151
- uvicorn_access_logger.addFilter(path_filter)
 
134
  Executed after a worker has been forked.
135
  This is a good place to set up worker-specific configurations.
136
  """
137
+ # Configure formatters
138
+ detailed_formatter = logging.Formatter(
139
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
140
+ )
141
+ simple_formatter = logging.Formatter("%(levelname)s: %(message)s")
142
+
143
+ def setup_logger(logger_name: str, level: str = "INFO", add_filter: bool = False):
144
+ """Set up a logger with console and file handlers"""
145
+ logger_instance = logging.getLogger(logger_name)
146
+ logger_instance.setLevel(level)
147
+ logger_instance.handlers = [] # Clear existing handlers
148
+ logger_instance.propagate = False
149
+
150
+ # Add console handler
151
+ console_handler = logging.StreamHandler()
152
+ console_handler.setFormatter(simple_formatter)
153
+ console_handler.setLevel(level)
154
+ logger_instance.addHandler(console_handler)
155
+
156
+ # Add file handler
157
+ file_handler = logging.handlers.RotatingFileHandler(
158
+ filename=log_file_path,
159
+ maxBytes=log_max_bytes,
160
+ backupCount=log_backup_count,
161
+ encoding="utf-8",
162
+ )
163
+ file_handler.setFormatter(detailed_formatter)
164
+ file_handler.setLevel(level)
165
+ logger_instance.addHandler(file_handler)
166
+
167
+ # Add path filter if requested
168
+ if add_filter:
169
+ path_filter = LightragPathFilter()
170
+ logger_instance.addFilter(path_filter)
171
+
172
+ # Set up main loggers
173
+ log_level = loglevel.upper() if loglevel else "INFO"
174
+ setup_logger("uvicorn", log_level)
175
+ setup_logger("uvicorn.access", log_level, add_filter=True)
176
+ setup_logger("lightrag", log_level, add_filter=True)
177
+
178
+ # Set up lightrag submodule loggers
179
+ for name in logging.root.manager.loggerDict:
180
+ if name.startswith("lightrag."):
181
+ setup_logger(name, log_level, add_filter=True)
182
+
183
+ # Disable uvicorn.error logger
184
  uvicorn_error_logger = logging.getLogger("uvicorn.error")
 
185
  uvicorn_error_logger.handlers = []
186
+ uvicorn_error_logger.setLevel(logging.CRITICAL)
187
  uvicorn_error_logger.propagate = False