QgsLogHandler.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. '''
  2. Logging handler for QGis
  3. @author: olivier.massot, 2018
  4. '''
  5. import logging
  6. from qgis.core import QgsMessageLog
  7. _to_qgis_level = {logging.DEBUG: 0,
  8. logging.INFO: 0,
  9. logging.WARNING: 1,
  10. logging.ERROR: 2,
  11. logging.CRITICAL: 2,
  12. logging.NOTSET: 4}
  13. class QgsLogHandler(logging.Handler):
  14. _qgs_iface = None
  15. @classmethod
  16. def connect_to_iface(cls, iface):
  17. cls._qgs_iface = iface
  18. def emit(self, record):
  19. try:
  20. msg = self.format(record)
  21. level = record.levelno
  22. QgsMessageLog.logMessage(msg, "Mnheck", _to_qgis_level[level])
  23. if self._qgs_iface and record.levelno >= logging.WARNING:
  24. self._qgs_iface.messageBar().pushMessage("MnCheck", msg, level=_to_qgis_level[level])
  25. except (KeyboardInterrupt, SystemExit):
  26. raise
  27. except:
  28. self.handleError(record)