def writeActivityLog(self, trans): """Write an entry to the activity log. Writes an entry to the script log file. Uses settings ``ActivityLogFilename`` and ``ActivityLogColumns``. """ filename = self.serverSidePath( self.setting('ActivityLogFilename')) if os.path.exists(filename): f = open(filename, 'a') else: f = open(filename, 'w') f.write(','.join(self.setting('ActivityLogColumns')) + '\n') values = [] # We use UserDict on the next line because we know it inherits # NamedValueAccess and reponds to valueForName() objects = UserDict({ 'application': self, 'transaction': trans, 'request': trans.request(), 'response': trans.response(), 'servlet': trans.servlet(), 'session': trans._session, # don't cause creation of session }) for column in self.setting('ActivityLogColumns'): try: value = objects.valueForName(column) except Exception: value = '(unknown)' if type(value) is FloatType: # probably need more flexibility in the future value = '%0.2f' % value else: value = str(value) values.append(value) f.write(','.join(values) + '\n') f.close() for i in objects.keys(): objects[i] = None