I am using a WMS-service as background map in an automatized atlas print process.
Unfortunately the WMS-service seems to have a problem on server side, as it is sometimes not responding (see error message: map request failed ... server replied bad request (see attached image)). By just triggering a repaint after some seconds or minutes, the WMS loads correctly.
Now I would like to catch this behaviour via python/pyqgis because the atlas print process produces empty background pages when the WMS is not responding. So I would need to check if this particular error occurs, and force a triggerRepaint() until the WMS-server responds correctly. I don´t know how, since the error appears only in the log message panel, under the tab "WMS". I already tried with try:...except... or by checking wmsLayer.isValid(), but this did not do the trick...
Is there anybody who generaly knows a way to catch this particular error appearing in the log messages panel?
Unfortunately the WMS-service is licensed, so I´m afraid the problem might not be reproducable...But I hope there is anybody out there who knows a way to catch errors from the log message panel.
I am using QGIS 2.18.2
With advice from Germán I was able to catch the error in the following way:
# coding=utf-8 from qgis.core import * wmsLayer_name="wms-dtk50_wgs" url_with_params ='url=http://sg.geodatenzentrum.de/wms_dtk50?&crs=EPSG:25832&featureCount=10&format=image/png&layers=DTK50&styles=' wmsLayer = QgsRasterLayer(url_with_params, wmsLayer_name,'wms') QgsMapLayerRegistry.instance().addMapLayer(wmsLayer) def errorCatcher( msg, tag, level ): if tag == 'WMS' and level != 0: #Warnings or Errors (0: Info, 1:Warning, 2:Error) print "WMS error detected!" myWMSLayer = QgsMapLayerRegistry.instance().mapLayersByName("wms-dtk50_wgs") myWMSLayer.triggerRepaint() # connect with messageReceived SIGNAL from QgsMessageLog to an errorCatcher custom function # instantly reacts if error/warning occurs QgsMessageLog.instance().messageReceived.connect( errorCatcher ) #after 100 times triggering a "wmsLayer.triggerRepaint()", # I get following warning in log messages panel "WMS": # "2017-01-17T07:17:52 1 Not logging more than 100 request errors."
Obviously the "WMS" provider seems to have a restriction of sending error requests to the messages log...opened a new question with this issue here: How to solve issue with log messages panel in QGIS: “Not logging more than 100 request errors.”?