omassot 7 anos atrás
pai
commit
5eabcee22d
4 arquivos alterados com 50 adições e 9 exclusões
  1. 34 0
      core/QHandler.py
  2. 1 1
      core/logconf.py
  3. 6 7
      core/logging.yaml
  4. 9 1
      main.py

+ 34 - 0
core/QHandler.py

@@ -0,0 +1,34 @@
+'''
+
+@author: olivier.massot, 2018
+'''
+import logging
+
+from qgis.core import QgsMessageLog
+
+_to_qgis_level = {logging.DEBUG: 0, 
+                  logging.INFO: 0, 
+                  logging.WARNING: 1,
+                  logging.ERROR: 2,
+                  logging.CRITICAL: 2, 
+                  logging.NOTSET: 4}
+
+
+class QHandler(logging.Handler):
+    
+    _qgs_iface = None
+
+    def emit(self, record):
+        try:
+            msg = self.format(record)
+            level = record.levelno
+            
+            QgsMessageLog.logMessage(msg, "Mnheck", _to_qgis_level[level])
+            
+            if QHandler._qgs_iface and record.levelno >= logging.WARNING:
+                QHandler._qgs_iface.messageBar().pushMessage("MnCheck", msg, level=_to_qgis_level[level])
+            
+        except (KeyboardInterrupt, SystemExit):
+            raise
+        except:
+            self.handleError(record)

+ 1 - 1
core/logconf.py

@@ -6,11 +6,11 @@ Created on 6 juil. 2017
 import logging.config
 import sys
 import traceback
-
 import yaml
 
 from core.constants import LOGDIR, LOGCONF
 
+
 SYS_EXCEPT_HOOK = sys.excepthook
 
 def start(name="main", level=0, filename=""):

+ 6 - 7
core/logging.yaml

@@ -11,11 +11,10 @@ formatters:
         format: "%(message)s"
         
 handlers:
-#    console:
-#        class: logging.StreamHandler
-#        level: INFO
-#        formatter: message_only
-#        stream: ext://sys.stdout
+    qgis:
+        class: core.QHandler.QHandler
+        level: DEBUG
+        formatter: message_only
     file:
         class: logging.handlers.RotatingFileHandler
         level: DEBUG
@@ -28,10 +27,10 @@ handlers:
 loggers:
     mncheck:
         level: DEBUG
-        handlers: [file]
+        handlers: [qgis, file]
         propagate: no
 
 root:
     level: DEBUG
-    handlers: []
+    handlers: [file]
     propagate: yes

+ 9 - 1
main.py

@@ -21,21 +21,25 @@
  *                                                                         *
  ***************************************************************************/
 """
-
 import logging
 
 from PyQt5.QtGui import QIcon
 from PyQt5.QtWidgets import QAction
 
 from core import logconf
+from core.QHandler import QHandler
 from core.constants import MAIN
 from ui.dlg_main import DlgMain
 
+
 __VERSION__ = "0.1.0"
 
 logger = logging.getLogger("mncheck")
 logconf.start("mncheck", logging.DEBUG)
 
+
+logger.info("* loading plugin")
+
 class MnCheck:
     def __init__(self, iface):
         self.iface = iface
@@ -71,6 +75,8 @@ class MnCheck:
     def initGui(self):
         """Create the menu entries and toolbar icons inside the QGIS GUI."""
         
+        QHandler._qgs_iface = self.iface
+        
         self.add_action(MAIN / 'icon.png', 
                         text='MnCheck', 
                         callback=self.run, 
@@ -88,3 +94,5 @@ class MnCheck:
         dlg = DlgMain(self.iface)
         dlg.show()
         dlg.exec_()
+
+