util/ProcessLogger.py
changeset 2712 a00f41d097f3
parent 2671 30493ff3a23a
child 2730 ce21ce181fdb
equal deleted inserted replaced
2711:ecfb59e4ecb0 2712:a00f41d097f3
    76     def __init__(self, logger, Command, finish_callback=None,
    76     def __init__(self, logger, Command, finish_callback=None,
    77                  no_stdout=False, no_stderr=False, no_gui=True,
    77                  no_stdout=False, no_stderr=False, no_gui=True,
    78                  timeout=None, outlimit=None, errlimit=None,
    78                  timeout=None, outlimit=None, errlimit=None,
    79                  endlog=None, keyword=None, kill_it=False, cwd=None,
    79                  endlog=None, keyword=None, kill_it=False, cwd=None,
    80                  encoding=None, output_encoding=None):
    80                  encoding=None, output_encoding=None):
    81         assert(logger)
       
    82         self.logger = logger
    81         self.logger = logger
    83         if not isinstance(Command, list):
    82         if not isinstance(Command, list):
    84             self.Command_str = Command
    83             self.Command_str = Command
    85             self.Command = []
    84             self.Command = []
    86             for i, word in enumerate(Command.replace("'", '"').split('"')):
    85             for i, word in enumerate(Command.replace("'", '"').split('"')):
   158     def output(self, v):
   157     def output(self, v):
   159         if v and self.output_encoding:
   158         if v and self.output_encoding:
   160             v = v.decode(self.output_encoding)
   159             v = v.decode(self.output_encoding)
   161         self.outdata.append(v)
   160         self.outdata.append(v)
   162         self.outlen += 1
   161         self.outlen += 1
   163         if not self.no_stdout:
   162         if self.logger and not self.no_stdout:
   164             self.logger.write(v)
   163             self.logger.write(v)
   165         if (self.keyword and v.find(self.keyword) != -1) or (self.outlimit and self.outlen > self.outlimit):
   164         if (self.keyword and v.find(self.keyword) != -1) or (self.outlimit and self.outlen > self.outlimit):
   166             self.endlog()
   165             self.endlog()
   167 
   166 
   168     def errors(self, v):
   167     def errors(self, v):
   169         if v and self.output_encoding:
   168         if v and self.output_encoding:
   170             v = v.decode(self.output_encoding)
   169             v = v.decode(self.output_encoding)
   171         self.errdata.append(v)
   170         self.errdata.append(v)
   172         self.errlen += 1
   171         self.errlen += 1
   173         if not self.no_stderr:
   172         if self.logger and not self.no_stderr:
   174             self.logger.write_warning(v)
   173             self.logger.write_warning(v)
   175         if self.errlimit and self.errlen > self.errlimit:
   174         if self.errlimit and self.errlen > self.errlimit:
   176             self.endlog()
   175             self.endlog()
   177 
   176 
   178     def log_the_end(self, ecode, pid):
   177     def log_the_end(self, ecode, pid):