LSSTApplications  11.0-13-gbb96280,12.1.rc1,12.1.rc1+1,12.1.rc1+2,12.1.rc1+5,12.1.rc1+8,12.1.rc1-1-g06d7636+1,12.1.rc1-1-g253890b+5,12.1.rc1-1-g3d31b68+7,12.1.rc1-1-g3db6b75+1,12.1.rc1-1-g5c1385a+3,12.1.rc1-1-g83b2247,12.1.rc1-1-g90cb4cf+6,12.1.rc1-1-g91da24b+3,12.1.rc1-2-g3521f8a,12.1.rc1-2-g39433dd+4,12.1.rc1-2-g486411b+2,12.1.rc1-2-g4c2be76,12.1.rc1-2-gc9c0491,12.1.rc1-2-gda2cd4f+6,12.1.rc1-3-g3391c73+2,12.1.rc1-3-g8c1bd6c+1,12.1.rc1-3-gcf4b6cb+2,12.1.rc1-4-g057223e+1,12.1.rc1-4-g19ed13b+2,12.1.rc1-4-g30492a7
LSSTDataManagementBasePackage
LoggerManager.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 #
4 # LSST Data Management System
5 # Copyright 2008, 2009, 2010 LSST Corporation.
6 #
7 # This product includes software developed by the
8 # LSST Project (http://www.lsst.org/).
9 #
10 # This program is free software: you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation, either version 3 of the License, or
13 # (at your option) any later version.
14 #
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
19 #
20 # You should have received a copy of the LSST License Statement and
21 # the GNU General Public License along with this program. If not,
22 # see <http://www.lsstcorp.org/LegalNotices/>.
23 #
24 
25 
26 import os
27 import sys
28 import re
29 import time
30 import signal
31 import subprocess
32 import lsst.log as log
33 
34 
35 ## Logger Manager base class
36 #
38  ## initialize
39  def __init__(self, broker, runid, dbHost=None, dbPort=None, dbName=None):
40  log.debug("LoggerManager:__init__")
41 
42  ## the event broker to listen on
43  self.broker = broker
44 
45  ## the run id of the logger messages to listen for
46  self.runid = runid
47 
48  ## the database host to connect to
49  self.dbHost = dbHost
50  ## the database port to connect to
51  self.dbPort = dbPort
52  ## the database name
53  self.dbName = dbName
54  ## the logger process
55  self.process = None
56  return
57 
58 
59  ## @return the id of the logger process
60  def getPID(self):
61  return self.process.pid
62 
63  ## start the logger daemon process
64  def start(self):
65  log.debug("LoggerManager:start")
66  if self.process != None:
67  return
68 
69  directory = os.getenv("CTRL_ORCA_DIR")
70  cmd = None
71  if self.dbHost is None:
72  cmd = "%s/bin/Logger.py --broker %s --runid %s" % (directory, self.broker, self.runid)
73  else:
74  cmd = "%s/bin/Logger.py --broker %s --host %s --port %s --runid %s --database %s" % (directory, self.broker, self.dbHost, self.dbPort, self.runid, self.dbName)
75  log.debug("LoggerManager:cmd = %s " % cmd)
76  self.process = subprocess.Popen(cmd, shell=True)
77  return
78 
79  ## halt the logger daemon process
80  def stop(self):
81  log.debug("LoggerManager:stop")
82  if self.process == None:
83  return
84 
85  try :
86  os.kill(self.process.pid, signal.SIGKILL)
87  os.waitpid(self.process.pid,0)
88  self.process = None
89  log.debug("LoggerManager:stop: killed Logger process")
90  except Exception,e:
91  log.debug("LoggerManager:stop: tried to kill Logger process, but it didn't exist")
92 
93  return
def stop
halt the logger daemon process
def start
start the logger daemon process
dbHost
the database host to connect to
Definition: Log.h:716
runid
the run id of the logger messages to listen for
broker
the event broker to listen on
dbPort
the database port to connect to