1
1
from dataclasses import dataclass
2
+ from math import log
2
3
import typing as t
3
4
import logging
4
5
import threading
@@ -350,13 +351,19 @@ def setup_with_config(
350
351
controller = cls (
351
352
console = console ,
352
353
config = config ,
354
+ log_override = log_override ,
353
355
)
354
356
return controller
355
357
356
- def __init__ (self , config : SQLMeshContextConfig , console : EventConsole ):
358
+ def __init__ (
359
+ self ,
360
+ config : SQLMeshContextConfig ,
361
+ console : EventConsole ,
362
+ log_override : t .Optional [logging .Logger ] = None ,
363
+ ):
357
364
self .config = config
358
365
self .console = console
359
- self .logger = logger
366
+ self .logger = log_override or logger
360
367
self ._context_open = False
361
368
362
369
def set_logger (self , logger : logging .Logger ):
@@ -379,7 +386,10 @@ def _create_context(self):
379
386
return Context (** options )
380
387
381
388
@contextmanager
382
- def instance (self , environment : str ):
389
+ def instance (self , environment : str , component : str = "unknown" ):
390
+ self .logger .info (
391
+ f"Opening sqlmesh instance for env={ environment } component={ component } "
392
+ )
383
393
if self ._context_open :
384
394
raise Exception ("Only one sqlmesh instance at a time" )
385
395
@@ -390,6 +400,9 @@ def instance(self, environment: str):
390
400
environment , self .console , self .config , context , self .logger
391
401
)
392
402
finally :
403
+ self .logger .info (
404
+ f"Closing sqlmesh instance for env={ environment } component={ component } "
405
+ )
393
406
self ._context_open = False
394
407
context .close ()
395
408
@@ -398,7 +411,7 @@ def run(
398
411
environment : str ,
399
412
** run_options : t .Unpack [RunOptions ],
400
413
):
401
- with self .instance (environment ) as mesh :
414
+ with self .instance (environment , "run" ) as mesh :
402
415
yield from mesh .run (** run_options )
403
416
404
417
def plan (
@@ -408,7 +421,7 @@ def plan(
408
421
default_catalog : t .Optional [str ],
409
422
plan_options : PlanOptions ,
410
423
):
411
- with self .instance (environment ) as mesh :
424
+ with self .instance (environment , "plan" ) as mesh :
412
425
yield from mesh .plan (categorizer , default_catalog , ** plan_options )
413
426
414
427
def plan_and_run (
@@ -419,7 +432,7 @@ def plan_and_run(
419
432
plan_options : t .Optional [PlanOptions ] = None ,
420
433
run_options : t .Optional [RunOptions ] = None ,
421
434
):
422
- with self .instance (environment ) as mesh :
435
+ with self .instance (environment , "plan_and_run" ) as mesh :
423
436
yield from mesh .plan_and_run (
424
437
categorizer = categorizer ,
425
438
default_catalog = default_catalog ,
0 commit comments