GRASS Programmer's Manual  6.4.2(2012)
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
debug.py
Go to the documentation of this file.
1 """!
2 @package debug
3 
4 @brief Debugging
5 
6 Classes:
7  - DebugMsg
8 
9 @code
10 from debug import Debug as Debug
11 Debug.msg (3, 'debug message')
12 @endcode
13 
14 COPYRIGHT: (C) 2007-2009, 2011 by the GRASS Development Team
15 This program is free software under the GNU General Public License
16 (>=v2). Read the file COPYING that comes with GRASS for details.
17 
18 @author Martin Landa <landa.martin gmail.com>
19 """
20 
21 import os
22 import sys
23 
24 import globalvar
25 
26 import grass.script as grass
27 
28 class DebugMsg:
29  """!wxGUI debugging
30 
31  @code
32  g.gisenv set=WX_DEBUG=[0-5]
33  @endcode
34  """
35  def __init__(self):
36  # default level
37  self.debuglevel = 0
38 
39  self.SetLevel()
40 
41  def SetLevel(self):
42  """!Initialize gui debug level
43  """
44  self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
45 
46  def msg(self, level, message, *args):
47  """!Print debug message
48 
49  @param level debug level (0-5)
50  @param message message to be printed
51  @param *args formatting params
52  """
53  # self.SetLevel()
54  if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
55  if args:
56  sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
57  message % args + os.linesep)
58  else:
59  sys.stderr.write("GUI D%d/%d: " % (level, self.debuglevel) + \
60  message + os.linesep)
61  sys.stderr.flush() # force flush (required for MS Windows)
62 
63  def GetLevel(self):
64  """!Return current GUI debug level"""
65  return self.debuglevel
66 
67 # Debug instance
68 Debug = DebugMsg()
69 
70 # testing
71 if __name__ == "__main__":
72  import gcmd
73  gcmd.RunCommand('g.gisenv',
74  set = 'DEBUG=3')
75 
76  for level in range (4):
77  Debug.msg (level, "message level=%d" % level)