Skip to content

Instantly share code, notes, and snippets.

@wassname
Created October 26, 2017 03:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wassname/6dd8309c1fbd80b1a8281bbc85fcfe2f to your computer and use it in GitHub Desktop.
Save wassname/6dd8309c1fbd80b1a8281bbc85fcfe2f to your computer and use it in GitHub Desktop.
pythonic log of gdal errors
import gdal
import logging
# example GDAL error handler function
gdal_logger = logging.getLogger('gdal')
if not gdal_logger.handlers:
gdal_logger.addHandler(logging.NullHandler)
errtype = {
gdal.CE_None: gdal_logger.info,
gdal.CE_Debug: gdal_logger.debug,
gdal.CE_Warning: gdal_logger.warn,
gdal.CE_Failure: gdal_logger.error,
gdal.CE_Fatal: gdal_logger.fatal
}
def gdal_error_handler(err_class, err_num, err_msg):
"""Log gdal errors."""
err_msg = err_msg.replace('\n', ' ')
log_f = errtype.get(err_class, gdal_logger.info)
err_class = log_f.__name__
full_msg = 'GdalError num=%r, type=%r, msg=%r' % (err_num, err_class,
err_msg)
log_f(full_msg)
#Exceptions will get raised on anything >= gdal.CE_Failure
gdal.UseExceptions()
# install error handler
gdal.PopErrorHandler()
gdal.PushErrorHandler(gdal_error_handler)
# test
if __name__ == '__main__':
gdal.Error(gdal.CE_Debug, 2, 'test CE_Debug')
gdal.Error(gdal.CE_Warning, 2, 'test CE_Warning')
gdal.Error(gdal.CE_Failure, 2, 'test CE_Failure')
# gdal.Error(gdal.CE_Fatal, 2, 'test CE_Fatal')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment