diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py index 03c09b81ec3061a22aff0aa6c793aa9829c5686a..4e483ca7b1a70d7287f711c0eabb1e164590882f 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py @@ -37,10 +37,11 @@ _FETCH_ONE=1 _FETCH_ALL=2 class RADatabase: - def __init__(self, dbcreds=None): + def __init__(self, dbcreds=None, log_queries=False): self.dbcreds = dbcreds self.conn = None self.cursor = None + self.log_queries = log_queries def _connect(self): self.conn = None @@ -62,8 +63,8 @@ class RADatabase: def _executeQuery(self, query, qargs=None, fetch=_FETCH_NONE): '''execute the query and reconnect upon OperationalError''' try: - if logger.getEffectiveLevel() == logging.DEBUG: #prevent expensive string manipulation above debug level - logger.debug('execute query: %s' % self._queryAsSingleLine(query, qargs)) + if self.log_queries: + logger.info('executing query: %s' % self._queryAsSingleLine(query, qargs)) self.cursor.execute(query, qargs) except (psycopg2.OperationalError, AttributeError) as e: @@ -892,7 +893,7 @@ class RADatabase: if __name__ == '__main__': logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', - level=logging.DEBUG) + level=logging.INFO) # Check the invocation arguments parser = OptionParser("%prog [options]", @@ -903,7 +904,7 @@ if __name__ == '__main__': dbcreds = dbcredentials.parse_options(options) - db = RADatabase(dbcreds=dbcreds) + db = RADatabase(dbcreds=dbcreds, log_queries=True) def resultPrint(method): print '\n-- ' + str(method.__name__) + ' --' diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/radbservice.ini b/SAS/ResourceAssignment/ResourceAssignmentService/radbservice.ini index b306483aa74afa72b06141f265347627551c8f67..6d6c20f477d95de54eb31dcd7820a19a7e81a4c0 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/radbservice.ini +++ b/SAS/ResourceAssignment/ResourceAssignmentService/radbservice.ini @@ -1,5 +1,5 @@ [program:radbservice] -command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;radbservice --busname=lofar.ra.command --servicename=RADBService' +command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;radbservice --busname=lofar.ra.command --servicename=RADBService --log-queries' user=lofarsys stopsignal=INT ; KeyboardInterrupt stopasgroup=true ; bash does not propagate signals diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/service.py b/SAS/ResourceAssignment/ResourceAssignmentService/service.py index a0f28ce9ac80c8ecb01a6be580f0b2a1e1224ea1..d954fff98e5b2ec6b7d4d9e32ca221fa57d9a1db 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/service.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/service.py @@ -35,6 +35,7 @@ class RADBHandler(MessageHandlerInterface): def __init__(self, **kwargs): super(RADBHandler, self).__init__(**kwargs) self.dbcreds = kwargs.pop("dbcreds", None) + self.log_queries = kwargs.pop("log_queries", False) self.service2MethodMap = { 'GetResourceClaimStatuses': self._getResourceClaimStatuses, @@ -69,7 +70,7 @@ class RADBHandler(MessageHandlerInterface): 'GetUnits': self._getUnits} def prepare_loop(self): - self.radb = radb.RADatabase(dbcreds=self.dbcreds) + self.radb = radb.RADatabase(dbcreds=self.dbcreds, log_queries=self.log_queries) def _getTaskStatuses(self): return self.radb.getTaskStatuses() @@ -253,14 +254,14 @@ class RADBHandler(MessageHandlerInterface): def _getUnits(self): return self.radb.getUnits() -def createService(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME, broker=None, dbcreds=None, verbose=False): +def createService(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME, broker=None, dbcreds=None, log_queries=False, verbose=False): return Service(servicename, RADBHandler, busname=busname, broker=broker, use_service_methods=True, numthreads=4, - handler_args={'dbcreds': dbcreds}, + handler_args={'dbcreds': dbcreds, 'log_queries': log_queries}, verbose=verbose) def main(): @@ -270,6 +271,7 @@ def main(): parser.add_option('-q', '--broker', dest='broker', type='string', default=None, help='Address of the qpid broker, default: localhost') parser.add_option("-b", "--busname", dest="busname", type="string", default=DEFAULT_BUSNAME, help="Name of the bus exchange on the qpid broker, default: %s" % DEFAULT_BUSNAME) parser.add_option("-s", "--servicename", dest="servicename", type="string", default=DEFAULT_SERVICENAME, help="Name for this service, default: %s" % DEFAULT_SERVICENAME) + parser.add_option('-Q', '--log-queries', dest='log_queries', action='store_true', help='log all pqsl queries') parser.add_option('-V', '--verbose', dest='verbose', action='store_true', help='verbose logging') parser.add_option_group(dbcredentials.options_group(parser)) parser.set_defaults(dbcredentials="RADB") @@ -285,6 +287,7 @@ def main(): servicename=options.servicename, broker=options.broker, verbose=options.verbose, + log_queries=options.log_queries, dbcreds=dbcreds): waitForInterrupt()