def message_fnc(id_, message, data): ''' Process a message from the actor. @param _id: Ids used by actors to identify themself and locate services to witch they belongs @param message: Mesagge received from actor @param data: Extra data ''' ids = id_.split(",")[:5] # Limit ids received to five... logger.debug("Called message for id_ {0}, message \"{1}\" and data \"{2}\"".format(ids, message, data)) # Fix: Log used to send "INFO", "DEBUG", .. as level instead of numeric # Now, we use levels, so for "legacy" actors we can do logs correctly if message == 'log': try: msg, level = data.split('\t') logger.debug('Msg: {}, level: "{}"'.format(msg, level)) level = "{}".format(log.logLevelFromStr(level)) logger.debug('Level: "{}"'.format(level)) data = '\t'.join([msg, level]) except Exception: logger.exception("Exception at log") data = data.replace('\t', ' ') + '\t10000' # Other res = "" try: services = UserService.objects.filter(unique_id__in=ids, state__in=[State.USABLE, State.PREPARING]) if services.count() == 0: res = "" else: res = services[0].getInstance().osmanager().process(services[0], message, data, None) except Exception as e: logger.error("Exception at message (client): {0}".format(e)) res = "" logger.debug("Returning {0}".format(res)) return res
def doLog(self, wichObject, level, message, source, avoidDuplicates=True): """ Do the logging for the requested object. If the object provided do not accepts associated loggin, it simply ignores the request """ if type(level) is not int: level = log.logLevelFromStr(level) owner_type = transDict.get(type(wichObject), None) if owner_type is not None: self.__log(owner_type, wichObject.id, level, message, source, avoidDuplicates) else: logger.debug('Requested doLog for a type of object not covered: {0}'.format(wichObject))
def doLog(self, wichObject: 'Model', level: typing.Union[int, str], message: str, source: str, avoidDuplicates: bool = True): """ Do the logging for the requested object. If the object provided do not accepts associated loggin, it simply ignores the request """ lvl = log.logLevelFromStr(level) if not isinstance( level, int) else typing.cast(int, level) owner_type = transDict.get(type(wichObject), None) if owner_type is not None: self.__log(owner_type, wichObject.id, lvl, message, source, avoidDuplicates) else: logger.debug( 'Requested doLog for a type of object not covered: %s', wichObject)