@@ -233,7 +233,11 @@ class SECoPBaseDevice(StandardReadable):
233233 """
234234
235235 def __init__ (
236- self , secclient : AsyncFrappyClient , module_name : str , loglevel = logging .INFO
236+ self ,
237+ secclient : AsyncFrappyClient ,
238+ module_name : str ,
239+ loglevel = logging .INFO ,
240+ logdir : str | None = None ,
237241 ) -> None :
238242 """Initiate A SECoPBaseDevice
239243
@@ -254,7 +258,7 @@ def __init__(
254258 name = self ._secclient .properties [EQUIPMENT_ID ].replace ("." , "-" )
255259
256260 self .logger : Logger = setup_logging (
257- name = f"secop-ophyd:{ name } :{ module_name } " , level = loglevel
261+ name = f"secop-ophyd:{ name } :{ module_name } " , level = loglevel , log_dir = logdir
258262 )
259263
260264 # Add configuration Signal
@@ -457,7 +461,11 @@ def noop(val):
457461class SECoPCommunicatorDevice (SECoPBaseDevice ):
458462
459463 def __init__ (
460- self , secclient : AsyncFrappyClient , module_name : str , loglevel = logging .INFO
464+ self ,
465+ secclient : AsyncFrappyClient ,
466+ module_name : str ,
467+ loglevel = logging .INFO ,
468+ logdir : str | None = None ,
461469 ):
462470 """Initializes the SECoPCommunicatorDevice
463471
@@ -468,7 +476,10 @@ def __init__(
468476 :type module_name: str"""
469477
470478 super ().__init__ (
471- secclient = secclient , module_name = module_name , loglevel = loglevel
479+ secclient = secclient ,
480+ module_name = module_name ,
481+ loglevel = loglevel ,
482+ logdir = logdir ,
472483 )
473484
474485
@@ -479,7 +490,11 @@ class SECoPReadableDevice(SECoPCommunicatorDevice, Triggerable, Subscribable):
479490 """
480491
481492 def __init__ (
482- self , secclient : AsyncFrappyClient , module_name : str , loglevel = logging .INFO
493+ self ,
494+ secclient : AsyncFrappyClient ,
495+ module_name : str ,
496+ loglevel = logging .INFO ,
497+ logdir : str | None = None ,
483498 ):
484499 """Initializes the SECoPReadableDevice
485500
@@ -494,7 +509,10 @@ def __init__(
494509 self .status : SignalR
495510
496511 super ().__init__ (
497- secclient = secclient , module_name = module_name , loglevel = loglevel
512+ secclient = secclient ,
513+ module_name = module_name ,
514+ loglevel = loglevel ,
515+ logdir = logdir ,
498516 )
499517
500518 if not hasattr (self , "value" ):
@@ -583,7 +601,11 @@ class SECoPTriggerableDevice(SECoPReadableDevice, Stoppable):
583601 """
584602
585603 def __init__ (
586- self , secclient : AsyncFrappyClient , module_name : str , loglevel = logging .info
604+ self ,
605+ secclient : AsyncFrappyClient ,
606+ module_name : str ,
607+ loglevel = logging .info ,
608+ logdir : str | None = None ,
587609 ):
588610 """Initialize SECoPTriggerableDevice
589611
@@ -599,7 +621,7 @@ def __init__(
599621 self ._success = True
600622 self ._stopped = False
601623
602- super ().__init__ (secclient , module_name , loglevel = loglevel )
624+ super ().__init__ (secclient , module_name , loglevel = loglevel , logdir = logdir )
603625
604626 async def __go_coro (self , wait_for_idle : bool ):
605627 await self ._secclient .exec_command (module = self ._module , command = "go" )
@@ -660,7 +682,11 @@ class SECoPMoveableDevice(SECoPWritableDevice, Locatable, Stoppable):
660682 """
661683
662684 def __init__ (
663- self , secclient : AsyncFrappyClient , module_name : str , loglevel = logging .INFO
685+ self ,
686+ secclient : AsyncFrappyClient ,
687+ module_name : str ,
688+ loglevel = logging .INFO ,
689+ logdir : str | None = None ,
664690 ):
665691 """Initialize SECoPMovableDevice
666692
@@ -673,7 +699,7 @@ def __init__(
673699
674700 self .target : SignalRW
675701
676- super ().__init__ (secclient , module_name , loglevel = loglevel )
702+ super ().__init__ (secclient , module_name , loglevel = loglevel , logdir = logdir )
677703
678704 if not hasattr (self , "target" ):
679705 raise AttributeError (
@@ -762,7 +788,9 @@ class SECoPNodeDevice(StandardReadable):
762788 to the Sec-node properties
763789 """
764790
765- def __init__ (self , secclient : AsyncFrappyClient , logger : Logger ):
791+ def __init__ (
792+ self , secclient : AsyncFrappyClient , logger : Logger , logdir : str | None = None
793+ ):
766794 """Initializes the node device and generates all node signals and subdevices
767795 corresponding to the SECoP-modules of the secnode
768796
@@ -814,7 +842,10 @@ def __init__(self, secclient: AsyncFrappyClient, logger: Logger):
814842 self ,
815843 module ,
816844 secop_dev_class (
817- self ._secclient , module , loglevel = self .logger .level
845+ self ._secclient ,
846+ module ,
847+ loglevel = self .logger .level ,
848+ logdir = logdir ,
818849 ),
819850 )
820851 self .mod_devices [module ] = getattr (self , module )
@@ -829,13 +860,18 @@ def __init__(self, secclient: AsyncFrappyClient, logger: Logger):
829860
830861 @classmethod
831862 def create (
832- cls , host : str , port : str , loop , loglevel : str = "INFO"
863+ cls ,
864+ host : str ,
865+ port : str ,
866+ loop ,
867+ loglevel : str = "INFO" ,
868+ logdir : str | None = None ,
833869 ) -> "SECoPNodeDevice" :
834870
835871 secclient : AsyncFrappyClient
836872
837873 logger : Logger = setup_logging (
838- name = f"frappy:{ host } :{ port } " , level = LOG_LEVELS [loglevel ]
874+ name = f"frappy:{ host } :{ port } " , level = LOG_LEVELS [loglevel ], log_dir = logdir
839875 )
840876
841877 if not loop .is_running ():
@@ -856,15 +892,20 @@ def create(
856892 "running in a seperate thread"
857893 )
858894
859- return SECoPNodeDevice (secclient = secclient , logger = logger )
895+ return SECoPNodeDevice (secclient = secclient , logger = logger , logdir = logdir )
860896
861897 @classmethod
862898 async def create_async (
863- cls , host : str , port : str , loop , loglevel : str = "INFO"
899+ cls ,
900+ host : str ,
901+ port : str ,
902+ loop ,
903+ loglevel : str = "INFO" ,
904+ logdir : str | None = None ,
864905 ) -> "SECoPNodeDevice" :
865906
866907 logger : Logger = setup_logging (
867- name = f"frappy:{ host } :{ port } " , level = LOG_LEVELS [loglevel ]
908+ name = f"frappy:{ host } :{ port } " , level = LOG_LEVELS [loglevel ], log_dir = logdir
868909 )
869910
870911 secclient : AsyncFrappyClient
@@ -888,7 +929,7 @@ async def create_async(
888929 secclient = await asyncio .wrap_future (future = client_future )
889930 secclient .external = True
890931
891- return SECoPNodeDevice (secclient = secclient , logger = logger )
932+ return SECoPNodeDevice (secclient = secclient , logger = logger , logdir = logdir )
892933
893934 def disconnect (self ):
894935 """shuts down secclient, eventloop must be running in external thread"""
0 commit comments