text: # Copyright (c) 2019 Capital Fund Management
  # SPDX-License-Identifier: MIT
  
  import logging
  import os
  import threading
  
  
  class LogPipe(threading.Thread):
  
      def __init__(self, level):
          """Setup the object with a logger and a loglevel
          and start the thread
          """
          threading.Thread.__init__(self)
          self.daemon = True
          self.level = level
          self.fdRead, self.fdWrite = os.pipe()
          self.pipeReader = os.fdopen(self.fdRead)
          self.start()
  
      def fileno(self):
          """Return the write file descriptor of the pipe
          """
          return self.fdWrite
  
      def run(self):
          """Run the thread, logging everything.
          """
          for line in iter(self.pipeReader.readline, ''):
              logging.log(self.level, line.strip('\n'))
  
          self.pipeReader.close()
  
      def close(self):
          """Close the write end of the pipe.
          """
          os.close(self.fdWrite)
  