4848from extra .magic import magic
4949from extra .odict .odict import OrderedDict
5050from extra .safe2bin .safe2bin import safecharencode
51+ from extra .termcolor .termcolor import colored
5152from lib .core .bigarray import BigArray
5253from lib .core .data import conf
5354from lib .core .data import kb
@@ -693,11 +694,54 @@ def singleTimeLogMessage(message, level=logging.INFO, flag=None):
693694 kb .singleLogFlags .add (flag )
694695 logger .log (level , message )
695696
697+ def setCurrentMessage (message ):
698+ if "[CRITICAL]" in message :
699+ conf .currentMessage = "CRITICAL"
700+ elif "[ERROR]" in message :
701+ conf .currentMessage = "ERROR"
702+ elif "[WARNING]" in message :
703+ conf .currentMessage = "WARNING"
704+ elif "[INFO]" in message :
705+ conf .currentMessage = "INFO"
706+ elif "[DEBUG]" in message :
707+ conf .currentMessage = "DEBUG"
708+ elif "[PAYLOAD]" in message :
709+ conf .currentMessage = "PAYLOAD"
710+ elif "[TRAFFIC OUT]" in message :
711+ conf .currentMessage = "TRAFFIC OUT"
712+ elif "[TRAFFIC IN]" in message :
713+ conf .currentMessage = "TRAFFIC IN"
714+
715+ def setColour (message ):
716+ if not hasattr (conf , "currentMessage" ):
717+ return message
718+
719+ if conf .currentMessage == "CRITICAL" :
720+ return colored (message , 'white' , on_color = 'on_red' , attrs = ['bold' ])
721+ elif conf .currentMessage == "ERROR" :
722+ return colored (message , 'red' , attrs = ['bold' ])
723+ elif conf .currentMessage == "WARNING" :
724+ return colored (message , 'yellow' )
725+ elif conf .currentMessage == "INFO" :
726+ return colored (message , 'green' )
727+ elif conf .currentMessage == "DEBUG" :
728+ return colored (message , 'blue' )
729+ elif conf .currentMessage == "PAYLOAD" :
730+ return colored (message , 'magenta' )
731+ elif conf .currentMessage == "TRAFFIC OUT" :
732+ return colored (message , 'cyan' )
733+ elif conf .currentMessage == "TRAFFIC IN" :
734+ return colored (message , 'grey' )
735+ else :
736+ return message
737+
696738def dataToStdout (data , forceOutput = False ):
697739 """
698740 Writes text to the stdout (console) stream
699741 """
700742
743+ message = ""
744+
701745 if not kb .get ("threadException" ):
702746 if forceOutput or not getCurrentThreadData ().disableStdOut :
703747 try :
@@ -717,16 +761,19 @@ def dataToStdout(data, forceOutput=False):
717761 warnMsg += "corresponding output files. "
718762 singleTimeWarnMessage (warnMsg )
719763
720- sys . stdout . write ( output )
764+ message = output
721765 else :
722- sys . stdout . write ( data .encode (sys .stdout .encoding ) )
766+ message = data .encode (sys .stdout .encoding )
723767 except :
724- sys .stdout .write (data .encode (UNICODE_ENCODING ))
725- finally :
726- sys .stdout .flush ()
727- if kb .get ("multiThreadMode" ):
728- logging ._releaseLock ()
729- setFormatterPrependFlag (len (data ) == 1 and data not in ('\n ' , '\r ' ) or len (data ) > 2 and data [0 ] == '\r ' and data [- 1 ] != '\n ' )
768+ message = data .encode (UNICODE_ENCODING )
769+
770+ sys .stdout .write (setColour (message ))
771+ sys .stdout .flush ()
772+
773+ if kb .get ("multiThreadMode" ):
774+ logging ._releaseLock ()
775+
776+ setFormatterPrependFlag (len (data ) == 1 and data not in ('\n ' , '\r ' ) or len (data ) > 2 and data [0 ] == '\r ' and data [- 1 ] != '\n ' )
730777
731778def dataToTrafficFile (data ):
732779 if not conf .trafficFile :
0 commit comments