debug.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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, 2011 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. import grass.script as grass
  19. class DebugMsg:
  20. """!wxGUI debugging
  21. @code
  22. g.gisenv set=WX_DEBUG=[0-5]
  23. @endcode
  24. """
  25. def __init__(self):
  26. # default level
  27. self.debuglevel = 0
  28. self.SetLevel()
  29. def SetLevel(self):
  30. """!Initialize gui debug level
  31. """
  32. self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
  33. def msg(self, level, message, *args):
  34. """!Print debug message
  35. @param level debug level (0-5)
  36. @param message message to be printed
  37. @param *args formatting params
  38. """
  39. # self.SetLevel()
  40. if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
  41. if args:
  42. sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
  43. message % args + os.linesep)
  44. else:
  45. sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
  46. message + os.linesep)
  47. sys.stderr.flush() # force flush (required for MS Windows)
  48. def GetLevel(self):
  49. """!Return current GUI debug level"""
  50. return self.debuglevel
  51. # Debug instance
  52. Debug = DebugMsg()
  53. # testing
  54. if __name__ == "__main__":
  55. import gcmd
  56. gcmd.RunCommand('g.gisenv',
  57. set = 'DEBUG=3')
  58. for level in range (4):
  59. Debug.msg (level, "message level=%d" % level)