118        telem_args = self.log.name + 
'.' + dev, 
'/opt/MagAOX/telem', (self.
config.logdump_exe, 
'--ext=.bintel'), dev, self.
telem_queuetelem_queue, Telem
 
  119        telem_thread = threading.Thread(target=_run_logdump_thread, args=telem_args, daemon=
True)
 
  121        self.log.debug(f
"Watching {dev} for incoming telem")
 
  124        if dev == 
"observers":
 
  126            user_log_thread = threading.Thread(target=_run_logdump_thread, args= ULog_args, daemon=
True)
 
  127            user_log_thread.start()
 
  128            self.log.debug(f
"Watching {dev} for incoming user logs")
 
 
  142        last_update = properties.NumberVector(name=
"last_update", perm=constants.PropertyPerm.READ_ONLY)
 
  143        last_update.add_element(DefNumber(
 
  146            min=0.0, max=1e200, format=
'%f',
 
  149        self.add_property(last_update)
 
  151        records = properties.NumberVector(name=
"records", perm=constants.PropertyPerm.READ_ONLY)
 
  152        records.add_element(DefNumber(
 
  155            min=0.0, max=1e200, format=
'%f',
 
  158        records.add_element(DefNumber(
 
  159            name=
"since_startup",
 
  161            min=0, max=1_000_000_000, format=
'%i',
 
  164        self.add_property(records)
 
  166        role = os.environ.get(
'MAGAOX_ROLE', 
'')
 
  167        proclist = pathlib.Path(self.
config.proclist.replace(
'%s', role))
 
  168        if not proclist.exists():
 
  169            raise RuntimeError(f
"No process list at {proclist}")
 
  173        with proclist.open() 
as fh:
 
  177                if line.strip()[0] == 
'#':
 
  179                parts = line.split(
None, 1)
 
  181                    raise RuntimeError(f
"Got malformed proclist line: {repr(line)}")
 
  182                device_names.add(parts[0])
 
  189        for dev 
in device_names:
 
  203        for dirname 
in self.
config.data_dirs:
 
  204            dirpath = self.
config.common_path_prefix / dirname
 
  205            if not dirpath.exists():
 
  206                self.log.debug(f
"No {dirpath} to watch")
 
  209            self.log.info(f
"Watching {dirpath} for changes")