2020from aworld_gateway .config import GatewayConfig
2121from aworld_gateway .http .artifact_service import ArtifactService
2222from aworld_gateway .http .server import create_gateway_app
23- from aworld_gateway .logging import configure_gateway_logging , get_gateway_logger
23+ from aworld_gateway .logging import (
24+ GATEWAY_CONSOLE_LOG_ENV ,
25+ configure_gateway_logging ,
26+ get_gateway_logger ,
27+ )
2428from aworld_gateway .registry import ChannelRegistry
2529from aworld_gateway .router import GatewayRouter , LocalCliAgentBackend
2630from aworld_gateway .runtime import GatewayRuntime
@@ -190,18 +194,27 @@ def _build_artifact_service(
190194 )
191195
192196
193- def _enable_aworld_console_logging_for_gateway () -> None :
194- os .environ ["AWORLD_DISABLE_CONSOLE_LOG" ] = "false"
197+ def _suppress_gateway_console_logging () -> None :
198+ os .environ ["AWORLD_DISABLE_CONSOLE_LOG" ] = "true"
199+ os .environ [GATEWAY_CONSOLE_LOG_ENV ] = "false"
195200
196201 try :
197202 from aworld .logs import util as log_util
198203 except Exception :
199204 return
200205
201206 aworld_logger = getattr (log_util , "logger" , None )
202- if aworld_logger is None or not getattr (aworld_logger , "disable_console" , False ):
207+ if aworld_logger is None or getattr (aworld_logger , "disable_console" , False ):
203208 return
204209
210+ log_id = getattr (aworld_logger , "log_id" , None )
211+ bound_logger = getattr (aworld_logger , "_logger" , None )
212+ if log_id is not None and bound_logger is not None :
213+ try :
214+ bound_logger .remove (log_id )
215+ except Exception :
216+ pass
217+
205218 file_log_config = getattr (aworld_logger , "file_log_config" , None )
206219 if isinstance (file_log_config , dict ):
207220 file_log_config = dict (file_log_config )
@@ -211,11 +224,18 @@ def _enable_aworld_console_logging_for_gateway() -> None:
211224 name = getattr (aworld_logger , "name" , "AWorld" ),
212225 console_level = getattr (aworld_logger , "console_level" , "INFO" ),
213226 formatter = getattr (aworld_logger , "formater" , None ),
214- disable_console = False ,
227+ disable_console = True ,
215228 file_log_config = file_log_config ,
216229 )
217230
218231
232+ def _restore_env_var (name : str , previous_value : str | None ) -> None :
233+ if previous_value is None :
234+ os .environ .pop (name , None )
235+ else :
236+ os .environ [name ] = previous_value
237+
238+
219239def _configure_gateway_file_logging (* , base_dir : Path ) -> Path :
220240 log_path = (base_dir / "logs" / "gateway.log" ).resolve ()
221241 os .environ ["AWORLD_GATEWAY_LOG_PATH" ] = str (log_path )
@@ -261,59 +281,69 @@ async def serve_gateway(
261281 agent_files : list [str ] | None ,
262282) -> None :
263283 resolved_base_dir = Path .cwd () if base_dir is None else Path (base_dir )
264- gateway_log_path = _configure_gateway_file_logging (base_dir = resolved_base_dir )
265- gateway_logger = get_gateway_logger ("cli" )
266- _enable_aworld_console_logging_for_gateway ()
267- enable_quiet_gateway_boot ()
268- gateway_logger .info (
269- "Gateway server boot starting "
270- f"base_dir={ resolved_base_dir .resolve ()} log_path={ gateway_log_path } "
271- )
272-
273- from aworld_cli .main import load_all_agents
274-
275- await load_all_agents (
276- remote_backends = remote_backends ,
277- local_dirs = local_dirs ,
278- agent_files = agent_files ,
279- )
280-
281- config = GatewayConfigLoader (base_dir = resolved_base_dir ).load_or_init ()
282- artifact_service = _build_artifact_service (base_dir = resolved_base_dir , config = config )
283- router = GatewayRouter (
284- session_binding = SessionBinding (),
285- agent_resolver = AgentResolver (default_agent_id = config .default_agent_id ),
286- agent_backend = LocalCliAgentBackend (),
287- )
288- runtime = GatewayRuntime (
289- config = config ,
290- registry = ChannelRegistry (),
291- router = router ,
292- artifact_service = artifact_service ,
293- )
294-
295- await runtime .start ()
296- gateway_logger .info (
297- "Gateway runtime started "
298- f"host={ config .gateway .host } port={ config .gateway .port } "
299- )
300- telegram_adapter = runtime .get_started_channel ("telegram" )
301- app = create_gateway_app (
302- runtime_status = runtime .status (),
303- artifact_service = artifact_service ,
304- telegram_adapter = telegram_adapter ,
305- telegram_webhook_path = config .channels .telegram .webhook_path ,
306- )
307- uvicorn_config = uvicorn .Config (
308- app = app ,
309- host = config .gateway .host ,
310- port = config .gateway .port ,
311- )
312- server = uvicorn .Server (uvicorn_config )
313-
284+ previous_disable_console_log = os .environ .get ("AWORLD_DISABLE_CONSOLE_LOG" )
285+ previous_gateway_console_log = os .environ .get (GATEWAY_CONSOLE_LOG_ENV )
286+ gateway_log_path : Path | None = None
287+ _suppress_gateway_console_logging ()
314288 try :
315- await server .serve ()
289+ gateway_log_path = _configure_gateway_file_logging (base_dir = resolved_base_dir )
290+ gateway_logger = get_gateway_logger ("cli" )
291+ enable_quiet_gateway_boot ()
292+ gateway_logger .info (
293+ "Gateway server boot starting "
294+ f"base_dir={ resolved_base_dir .resolve ()} log_path={ gateway_log_path } "
295+ )
296+
297+ from aworld_cli .main import load_all_agents
298+
299+ await load_all_agents (
300+ remote_backends = remote_backends ,
301+ local_dirs = local_dirs ,
302+ agent_files = agent_files ,
303+ )
304+
305+ config = GatewayConfigLoader (base_dir = resolved_base_dir ).load_or_init ()
306+ artifact_service = _build_artifact_service (base_dir = resolved_base_dir , config = config )
307+ router = GatewayRouter (
308+ session_binding = SessionBinding (),
309+ agent_resolver = AgentResolver (default_agent_id = config .default_agent_id ),
310+ agent_backend = LocalCliAgentBackend (),
311+ )
312+ runtime = GatewayRuntime (
313+ config = config ,
314+ registry = ChannelRegistry (),
315+ router = router ,
316+ artifact_service = artifact_service ,
317+ )
318+
319+ await runtime .start ()
320+ gateway_logger .info (
321+ "Gateway runtime started "
322+ f"host={ config .gateway .host } port={ config .gateway .port } "
323+ )
324+ telegram_adapter = runtime .get_started_channel ("telegram" )
325+ app = create_gateway_app (
326+ runtime_status = runtime .status (),
327+ artifact_service = artifact_service ,
328+ telegram_adapter = telegram_adapter ,
329+ telegram_webhook_path = config .channels .telegram .webhook_path ,
330+ )
331+ uvicorn_config = uvicorn .Config (
332+ app = app ,
333+ host = config .gateway .host ,
334+ port = config .gateway .port ,
335+ log_level = str (os .getenv ("AWORLD_GATEWAY_UVICORN_LOG_LEVEL" ) or "warning" ),
336+ )
337+ server = uvicorn .Server (uvicorn_config )
338+
339+ try :
340+ await server .serve ()
341+ finally :
342+ gateway_logger .info ("Gateway runtime stopping" )
343+ await runtime .stop ()
344+ gateway_logger .info ("Gateway runtime stopped" )
316345 finally :
317- gateway_logger .info ("Gateway runtime stopping" )
318- await runtime .stop ()
319- gateway_logger .info ("Gateway runtime stopped" )
346+ _restore_env_var ("AWORLD_DISABLE_CONSOLE_LOG" , previous_disable_console_log )
347+ _restore_env_var (GATEWAY_CONSOLE_LOG_ENV , previous_gateway_console_log )
348+ if gateway_log_path is not None :
349+ configure_gateway_logging (log_path = gateway_log_path )
0 commit comments