def emit(self, eventDict): text = textFromEventDict(eventDict) if text is None: return timeStr = self._colorize(self.formatTime(eventDict['time']), ColoredFileLogObserver.GREY_NORMAL) fmtDict = { 'system': eventDict['system'], 'text': text.replace("\n", "\n\t") } systemStr = "" systemStr = self._colorize(_safeFormat("[%(system)s]", fmtDict), ColoredFileLogObserver.GREY_NORMAL) textStr = _safeFormat("%(text)s", fmtDict) if textStr.startswith("SSH"): t = textStr.find("STDERR:") if t != -1: textStr = self._colorize(textStr[t + 8:], ColoredFileLogObserver.RED_BOLD) else: textStr = self._colorize(textStr[textStr.find("STDOUT:") + 8:], ColoredFileLogObserver.GREEN_BOLD) # only text for incoming data msgStr = textStr + "\n" else: # add system to the local logs # TODO: Make system more useful, not just "SSHChannel...". msgStr = systemStr + " " + textStr + "\n" util.untilConcludes(self.write, timeStr + " " + msgStr) util.untilConcludes(self.flush) # Hoorj!
def emit(self, eventDict): text = textFromEventDict(eventDict) if text is None: return timeStr = self._colorize(self.formatTime(eventDict["time"]), ColoredFileLogObserver.GREY_NORMAL) fmtDict = {"system": eventDict["system"], "text": text.replace("\n", "\n\t")} systemStr = "" systemStr = self._colorize(_safeFormat("[%(system)s]", fmtDict), ColoredFileLogObserver.GREY_NORMAL) textStr = _safeFormat("%(text)s", fmtDict) if textStr.startswith("SSH"): t = textStr.find("STDERR:") if t != -1: textStr = self._colorize(textStr[t + 8 :], ColoredFileLogObserver.RED_BOLD) else: textStr = self._colorize(textStr[textStr.find("STDOUT:") + 8 :], ColoredFileLogObserver.GREEN_BOLD) # only text for incoming data msgStr = textStr + "\n" else: # add system to the local logs # TODO: Make system more useful, not just "SSHChannel...". msgStr = systemStr + " " + textStr + "\n" util.untilConcludes(self.write, timeStr + " " + msgStr) util.untilConcludes(self.flush) # Hoorj!
def koj_watcher(eventDict): """Custom emit for FileLogObserver""" text = log.textFromEventDict(eventDict) if text is None: return fmtDict = {'text': text.replace("\n", "\n\t")} msgStr = log._safeFormat("%(text)s\n", fmtDict)
def emit(self, eventDict): """Changing the default log format. Base method that writes cis log. Here we can access the log message and manipulate it as we need. For example, define the log format and filter out password from the message. This can be configured per service in cisconf with LOG_FORMATTERS tuple of pairs (pattern, replacement). TODO: This is a hack, twisted should have a better way of modifying its log format""" text = log.textFromEventDict(eventDict) if text is None: return if isinstance(self.log_formatters, (list, tuple)): for pattern, replacement in self.log_formatters: text = re.sub(pattern, replacement, text) timeStr = self.formatTime(eventDict['time']) fmtDict = { 'system': eventDict['system'], 'text': text.replace("\n", "\n\t") } msgStr = log._safeFormat("[%(system)s] %(text)s\n", fmtDict) util.untilConcludes(self.write, '%s %s %s' % (timeStr, self.log_prefix, msgStr)) util.untilConcludes(self.flush) # Hoorj!
def emit(self, eventDict): """ Handles formatting system log messages along with incrementing the objs error counters. The eventDict is generated by the arguments passed to each log level call. See the unittests for an example. """ if 'failure' in eventDict: vf = eventDict['failure'] e_t, e_v, e_tb = vf.type, vf.value, vf.getTracebackObject() sys.excepthook(e_t, e_v, e_tb) text = twlog.textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = twlog._safeFormat("[%(system)s] %(text)s\n", fmtDict) if GLLogObserver.suppressed == GLLogObserver.limit_suppressed: GLLogObserver.suppressed = 0 GLLogObserver.limit_suppressed += 5 GLLogObserver.last_exception_msg = "" try: # in addition to escape sequence removal on logfiles we also quote html chars util.untilConcludes(self.write, timeStr + " " + log_encode_html(msgStr)) util.untilConcludes(self.flush) # Hoorj! except Exception as excep: GLLogObserver.suppressed += 1 GLLogObserver.last_exception_msg = str(excep)
def emit(self, eventDict): """ Extended base class' 'emit' method by log level support. """ if eventDict['isError']: level = logging.ERROR elif 'level' in eventDict: level = eventDict['level'] else: level = logging.INFO if level < self.log_level: return text = tx_log.textFromEventDict(eventDict) if text is None: return time_str = self.formatTime(eventDict['time']) fmt_dict = { 'level': logging.getLevelName(level), 'system': eventDict['system'], 'text': text.replace("\n", "\n\t") } msg_str = tx_log._safeFormat("%(level)s:[%(system)s]:%(text)s\n", fmt_dict) tx_util.untilConcludes(self.write, time_str + " " + msg_str) tx_util.untilConcludes(self.flush)
def emit(self, eventDict): """Changing the default log format. Base method that writes cis log. Here we can access the log message and manipulate it as we need. For example, define the log format and filter out password from the message. This can be configured per service in cisconf with LOG_FORMATTERS tuple of pairs (pattern, replacement). TODO: This is a hack, twisted should have a better way of modifying its log format""" text = log.textFromEventDict(eventDict) if text is None: return if isinstance(self.log_formatters, (list,tuple)): for pattern, replacement in self.log_formatters: text = re.sub(pattern, replacement, text) timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = log._safeFormat("[%(system)s] %(text)s\n", fmtDict) util.untilConcludes(self.write, '%s %s %s' % (timeStr, self.log_prefix, msgStr)) util.untilConcludes(self.flush) # Hoorj!
def emit(self, eventDict): if eventDict["isError"]: level = logging.ERROR elif "level" in eventDict: level = eventDict["level"] else: level = logging.INFO if level < self.logLevel: return message = log.textFromEventDict(eventDict) if not message: return logElements = { "timestamp": self.formatTime(eventDict["time"]), "level": logging.getLevelName(level), "system": eventDict["system"], "text": message.replace("\n", "\n\t") } messageString = "{} {}".format(logElements["timestamp"], log._safeFormat("%(level)7s:[%(system)s]: %(text)s\n", logElements)) print messageString.replace("\n", "") util.untilConcludes(self.write, messageString) util.untilConcludes(self.flush)
def emit(self, eventDict): if 'failure' in eventDict: vf = eventDict['failure'] e_t, e_v, e_tb = vf.type, vf.value, vf.getTracebackObject() sys.excepthook(e_t, e_v, e_tb) text = twlog.textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = twlog._safeFormat("[%(system)s] %(text)s\n", fmtDict) if GLLogObserver.suppressed == GLLogObserver.limit_suppressed: GLLogObserver.suppressed = 0 GLLogObserver.limit_suppressed += 5 GLLogObserver.last_exception_msg = "" try: # in addition to escape sequence removal on logfiles we also quote html chars util.untilConcludes(self.write, timeStr + " " + log_encode_html(msgStr)) util.untilConcludes(self.flush) # Hoorj! except Exception as excep: GLLogObserver.suppressed += 1 GLLogObserver.last_exception_msg = str(excep)
def emit(self, eventDict): """ Handles formatting system log messages along with incrementing the objs error counters. The eventDict is generated by the arguments passed to each log level call. See the unittests for an example. """ if 'failure' in eventDict: vf = eventDict['failure'] e_t, e_v, e_tb = vf.type, vf.value, vf.getTracebackObject() sys.excepthook(e_t, e_v, e_tb) text = twlog.textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = { 'system': eventDict['system'], 'text': text.replace("\n", "\n\t") } msgStr = twlog._safeFormat("[%(system)s] %(text)s\n", fmtDict) util.untilConcludes(self.write, timeStr + " " + log_encode_html(msgStr)) util.untilConcludes(self.flush)
def emit(self, eventDict): if 'failure' in eventDict: vf = eventDict['failure'] e_t, e_v, e_tb = vf.type, vf.value, vf.getTracebackObject() sys.excepthook(e_t, e_v, e_tb) text = twlog.textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = twlog._safeFormat("[%(system)s] %(text)s\n", fmtDict) if GLLogObserver.suppressed == GLLogObserver.limit_suppressed: # This code path flush the status of the broken log, in the case a flood is happen # for few moment or in the case something goes wrong when logging below. log.info("!! has been suppressed %d log lines due to error flood (last error %s)" % (GLLogObserver.limit_suppressed, GLLogObserver.last_exception_msg) ) GLLogObserver.suppressed = 0 GLLogObserver.limit_suppressed += 5 GLLogObserver.last_exception_msg = "" try: # in addition to escape sequence removal on logfiles we also quote html chars util.untilConcludes(self.write, timeStr + " " + log_encode_html(msgStr)) util.untilConcludes(self.flush) # Hoorj! except Exception as excep: GLLogObserver.suppressed += 1 GLLogObserver.last_exception_msg = str(excep)
def emit(self, eventDict): """ Extends method of the base class by providing support for log level. """ if eventDict['isError']: level = logging.ERROR elif 'level' in eventDict: level = eventDict['level'] else: level = logging.INFO if level < self.log_level: return text = log.textFromEventDict(eventDict) if text is None: return time_str = self.formatTime(eventDict['time']) fmt_dict = { 'level': logging.getLevelName(level), 'system': eventDict['system'], 'text': text.replace("\n", "\n\t") } msg_str = log._safeFormat( "%(level)8s:[%(system)s]: %(text)s\n", fmt_dict) util.untilConcludes(self.write, "{0} {1}".format(time_str, msg_str)) util.untilConcludes(self.flush)
def quietEmit(self, eventDict): text = log.textFromEventDict(eventDict) if text is None: return formatDict = { "text": text.replace("\n", "\n\t") } msg = log._safeFormat("%(text)s\n", formatDict) util.untilConcludes(self.write, msg) util.untilConcludes(self.flush)
def __call__(self, event): msg = event['message'] if not msg: if event['isError'] and event.has_key('failure'): msg = ((event.get('why') or 'Unhandled Error') + '\n' + event['failure'].getTraceback()) elif event.has_key('format'): if hasattr(self, '_safeFormat'): msg = self._safeFormat(event['format'], event) else: msg = log._safeFormat(event['format'], event) else: return else: msg = ' '.join(map(reflect.safe_str, msg)) try: module = event['system'] # Initialize the vlog modules on-demand, since systems are # not initialized explicitly in the Twisted logging API. if not self.modules.has_key(module): if module == '-': module = 'reactor' self.modules['-'] = self.v.mod_init(module) self.modules[module] = self.modules['-'] else: self.modules[module] = self.v.mod_init(module) # vlog module identifier module = self.modules[module] fmt = {'system': module, 'msg': msg.replace("\n", "\n\t")} if hasattr(self, '_safeFormat'): msg = self._safeFormat("%(msg)s", fmt) else: msg = log._safeFormat("%(msg)s", fmt) if event["isError"]: self.v.err(module, msg) else: self.v.msg(module, msg) except Exception, e: # Can't pass an exception, since then the observer would # be disabled automatically. pass
def emit(self, eventDict): text = tw_log.textFromEventDict(eventDict) if text is None: return fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = tw_log._safeFormat("[%(system)s] %(text)s\n", fmtDict) util.untilConcludes(self.write, msgStr) util.untilConcludes(self.flush)
def emit(self, eventDict): text = log.textFromEventDict(eventDict) if text is None: text = '<no text>' timeStr = self.formatTime(eventDict['time']) fmtDict = {'time': timeStr, 'text': text} output = log._safeFormat('%(time)s %(text)s\n', fmtDict) util.untilConcludes(self.write, output) util.untilConcludes(self.flush)
def __call__(self, event): msg = event["message"] if not msg: if event["isError"] and event.has_key("failure"): msg = (event.get("why") or "Unhandled Error") + "\n" + event["failure"].getTraceback() elif event.has_key("format"): if hasattr(self, "_safeFormat"): msg = self._safeFormat(event["format"], event) else: msg = log._safeFormat(event["format"], event) else: return else: msg = " ".join(map(reflect.safe_str, msg)) try: module = event["system"] # Initialize the vlog modules on-demand, since systems are # not initialized explicitly in the Twisted logging API. if not self.modules.has_key(module): if module == "-": module = "reactor" self.modules["-"] = self.v.mod_init(module) self.modules[module] = self.modules["-"] else: self.modules[module] = self.v.mod_init(module) # vlog module identifier module = self.modules[module] fmt = {"system": module, "msg": msg.replace("\n", "\n\t")} if hasattr(self, "_safeFormat"): msg = self._safeFormat("%(msg)s", fmt) else: msg = log._safeFormat("%(msg)s", fmt) if event["isError"]: self.v.err(module, msg) else: self.v.msg(module, msg) except Exception, e: # Can't pass an exception, since then the observer would # be disabled automatically. pass
def custom_emit(self, event_dict): """Custom emit for FileLogObserver""" text = log.textFromEventDict(event_dict) if text is None: return self.timeFormat = '[%Y-%m-%d %H:%M:%S %f]' time_str = self.formatTime(event_dict['time']) fmt_dict = {'text': text.replace("\n", "\n\t")} msg_str = log._safeFormat("%(text)s\n", fmt_dict) util.untilConcludes(self.write, time_str + " " + msg_str) util.untilConcludes(self.flush)
def myFLOemit(self,eventDict): """Custom emit for FileLogObserver""" text = log.textFromEventDict(eventDict) if text is None: return self.timeFormat='[%Y-%m-%d %H:%M:%S]' timeStr = self.formatTime(eventDict['time']) fmtDict = {'text': text.replace("\n", "\n\t")} msgStr = log._safeFormat("%(text)s\n", fmtDict) util.untilConcludes(self.write, timeStr + " " + msgStr) util.untilConcludes(self.flush)
def emit(self, eventDict): text = textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = log._safeFormat("[%(system)s] %(text)s\n", fmtDict) #util.untilConcludes(self.write, timeStr + " " + msgStr) #util.untilConcludes(self.flush) # Hoorj! #util.untilConcludes(sys.__stdout__.write, msgStr) print(msgStr)
def emit(self, event): text = log.textFromEventDict(event) if text is None: return self.timeFormat = '[%Y-%m-%d %H:%M:%S]' time_str = self.formatTime(event['time']) fmt_dict = {'text': text.replace('\n', '\n\t')} msg_str = log._safeFormat('%(text)s\n', fmt_dict) logging.debug(str(event)) util.untilConcludes(self.write, time_str + ' ' + socket.gethostname() + ' ' + msg_str) util.untilConcludes(self.flush)
def emit(self, eventDict): if "isError" in eventDict and \ eventDict["isError"] and \ "header" not in eventDict: eventDict["header"] = "-" if "header" not in eventDict: return text = log.textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'header': eventDict['header'], 'text': text.replace("\n", "\n\t")} msgStr = log._safeFormat("[%(header)s] %(text)s\n", fmtDict) util.untilConcludes(self.write, timeStr + " " + msgStr) util.untilConcludes(self.flush)
def myFLOemit(self, eventDict): """Custom emit for FileLogObserver""" max_text = 256 text = log.textFromEventDict(eventDict) if text is None: return if len(text) > max_text: text = text[:max_text] self.timeFormat = '[%Y-%m-%d %H:%M:%S]' timeStr = self.formatTime(eventDict['time']) fmtDict = {'text': text.replace("\n", "\n\t")} msgStr = log._safeFormat("%(text)s\n", fmtDict) util.untilConcludes(self.write, timeStr + " " + msgStr) util.untilConcludes(self.flush)
def emit(self, event): text = log.textFromEventDict(event) if text is None: return self.timeFormat = '[%Y-%m-%d %H:%M:%S]' time_str = self.formatTime(event['time']) fmt_dict = {'text': text.replace('\n', '\n\t')} msg_str = log._safeFormat('%(text)s\n', fmt_dict) logging.debug(str(event)) util.untilConcludes( self.write, time_str + ' ' + socket.gethostname() + ' ' + msg_str) util.untilConcludes(self.flush)
def emit(self, eventDict): text = log.textFromEventDict(eventDict) if text is None: return level = eventDict.get("level", 20) if level < self.level: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t"), 'level': self.levels[level]} msgStr = log._safeFormat("%(level)s [%(system)s] %(text)s\n", fmtDict) twisted.python.util.untilConcludes(self.write, timeStr + " " + msgStr) twisted.python.util.untilConcludes(self.flush)
def emit(self, eventDict): """ Copied from Twisted parent, to change logging output """ text = log.textFromEventDict(eventDict) if text is None: return # timeStr = self.formatTime(eventDict["time"]) timeStr = timeformat(eventDict["time"]) fmtDict = {"text": text.replace("\n", "\n\t")} msgStr = log._safeFormat("%(text)s\n", fmtDict) twisted_util.untilConcludes(self.write, timeStr + "%s" % self.prefix + msgStr) twisted_util.untilConcludes(self.flush)
def emit(self, eventDict): """ Copied from Twisted parent, to change logging output """ text = log.textFromEventDict(eventDict) if text is None: return # timeStr = self.formatTime(eventDict["time"]) timeStr = timeformat(eventDict["time"]) fmtDict = { "text": text.replace("\n", "\n\t")} msgStr = log._safeFormat("%(text)s\n", fmtDict) twisted_util.untilConcludes(self.write, timeStr + "%s" % self.prefix + msgStr) twisted_util.untilConcludes(self.flush)
def emit(self, eventDict): if not self.send_printed and eventDict.get('printed', False): return if self.client._transport.channel.closed: self.stop() return text = textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = _safeFormat("[%(system)s] %(text)s\n", fmtDict) self.client.receive_log_entry(self.module_address, timeStr + " " + msgStr)
def emit(self, eventDict): text = log.textFromEventDict(eventDict) if text is None: return level = eventDict.get("level", 20) if level < self.level: return timeStr = self.formatTime(eventDict['time']) fmtDict = { 'system': eventDict['system'], 'text': text.replace("\n", "\n\t"), 'level': self.levels[level] } msgStr = log._safeFormat("%(level)s [%(system)s] %(text)s\n", fmtDict) twisted.python.util.untilConcludes(self.write, timeStr + " " + msgStr) twisted.python.util.untilConcludes(self.flush)
def productive_logformat(self, eventDict): text = log.textFromEventDict(eventDict) if text is None: return code = level_code[eventDict['log_level'].name] timeStr = str(eventDict['time'] + tzoffset) # use UTC timestamp # append 0 for value likes "1526537871.8" (disabled to reduce overhead) # timeStr += '0' if len(timeStr)==12 else '' # python2 len is 13, python3 len is 17 #assert len(timeStr)==13,'expect len(timeStr)==13, got %s(%s)' % (len(timeStr), timeStr) fmtDict = { 'text': text.replace('\n', '\\n'), # flat into one line only 'code': code, } msgStr = log._safeFormat(":%(code)s:%(text)s\n", fmtDict) util.untilConcludes(self.write, timeStr[:13] + msgStr) util.untilConcludes(self.flush)
def emit(self, eventDict): """ Handles formatting system log messages along with incrementing the objs error counters. The eventDict is generated by the arguments passed to each log level call. See the unittests for an example. """ if 'failure' in eventDict: vf = eventDict['failure'] e_t, e_v, e_tb = vf.type, vf.value, vf.getTracebackObject() sys.excepthook(e_t, e_v, e_tb) text = txlog.textFromEventDict(eventDict) if text is None: return timeStr = self.formatTime(eventDict['time']) fmtDict = {'system': eventDict['system'], 'text': text.replace("\n", "\n\t")} msgStr = txlog._safeFormat("[%(system)s] %(text)s\n", fmtDict) util.untilConcludes(self.write, timeStr + ' ' + msgStr) util.untilConcludes(self.flush)
def log_dictionary(self, event_dict, level): """ Format the given log event as text and write it to the output file. @param event_dict: a log event @type event_dict: L{dict} mapping L{str} (native string) to L{object} @param level: The event level to log. """ text = textFromEventDict(event_dict) if text is None: return time_str = self.formatTime(event_dict["time"]) fmt_dict = { "system": event_dict["system"], "text": text.replace("\n", "\n\t") } msg_str = _safeFormat("[%(system)s] %(text)s\n", fmt_dict) untilConcludes( logging.getLogger('parlay').log, level, time_str + " " + msg_str)
def quietEmit(self, eventDict): text = log.textFromEventDict(eventDict) if text is None: return if "/api/statusinfo" in text: # do not log OWF statusinfo return # Log with time stamp. # # timeStr = self.formatTime(eventDict["time"]) # fmtDict = { # "ts": timeStr, # "system": eventDict["system"], # "text": text.replace("\n", "\n\t") # } # msgStr = log._safeFormat("%(ts)s [%(system)s] %(text)s\n", fmtDict) # # Log without time stamp. # fmtDict = {"text": text.replace("\n", "\n\t")} msgStr = log._safeFormat("%(text)s\n", fmtDict) util.untilConcludes(self.write, msgStr) util.untilConcludes(self.flush)