debug.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. """!
  2. @package debug
  3. @brief Debugging
  4. Classes:
  5. - DebugMsg
  6. @code
  7. from debug import Debug as Debug
  8. Debug.msg (3, 'debug message')
  9. @endcode
  10. COPYRIGHT: (C) 2007-2009 by the GRASS Development Team
  11. This program is free software under the GNU General Public License
  12. (>=v2). Read the file COPYING that comes with GRASS for details.
  13. @author Martin Landa <landa.martin gmail.com>
  14. """
  15. import os
  16. import sys
  17. import globalvar
  18. class DebugMsg:
  19. """!
  20. wxGUI debugging
  21. @code
  22. export GRASS_WX_DEBUG=[0-5]
  23. @endcode
  24. """
  25. def __init__(self):
  26. # default level
  27. self.debuglevel = 0
  28. # update level
  29. self._update_level()
  30. def _update_level(self):
  31. debug = os.getenv("GRASS_WX_DEBUG")
  32. if debug is not None:
  33. try:
  34. # only GUI debug messages [GUI:level]
  35. level = int (debug[-1])
  36. except:
  37. level = self.debuglevel
  38. if self.debuglevel != level:
  39. self.debuglevel = level
  40. def msg (self, level, message, *args):
  41. self._update_level()
  42. if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
  43. if args:
  44. print >> sys.stderr, "GUI D%d/%d: " % (level, self.debuglevel) + \
  45. message % args
  46. else:
  47. print >> sys.stderr, "GUI D%d/%d: " % (level, self.debuglevel) + \
  48. message
  49. def get_level(self):
  50. """!Return current GUI debug level"""
  51. return self.debuglevel
  52. # Debug instance
  53. Debug = DebugMsg()
  54. # testing
  55. if __name__ == "__main__":
  56. import gcmd
  57. gcmd.RunCommand('g.gisenv',
  58. set = 'DEBUG=3')
  59. for level in range (4):
  60. Debug.msg (level, "message level=%d" % level)