comparison engine/python/fife/extensions/fifelog.py @ 495:ae9f5383f5b1

Added a new log module called Script. This should be used by the python modules. Did some code cleanup and comment cleanup. Added some more visible log modules to the shooter demo for fun.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Tue, 11 May 2010 21:30:55 +0000
parents 64738befdf3b
children 987307d12235
comparison
equal deleted inserted replaced
494:e241d7553496 495:ae9f5383f5b1
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 2
3 # #################################################################### 3 # ####################################################################
4 # Copyright (C) 2005-2009 by the FIFE team 4 # Copyright (C) 2005-2010 by the FIFE team
5 # http://www.fifengine.de 5 # http://www.fifengine.net
6 # This file is part of FIFE. 6 # This file is part of FIFE.
7 # 7 #
8 # FIFE is free software; you can redistribute it and/or 8 # FIFE is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public 9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either 10 # License as published by the Free Software Foundation; either
22 # #################################################################### 22 # ####################################################################
23 23
24 from fife import fife 24 from fife import fife
25 25
26 class LogManager(object): 26 class LogManager(object):
27 ''' 27 """
28 Log manager provides convenient apis to access engine logging functionality. 28 Log manager provides convenient apis to access engine logging functionality.
29 You can set log targets individually (prompt, file). You can also adjust 29 You can set log targets individually (prompt, file). You can also adjust
30 things like visible modules through log manager. 30 things like visible modules through log manager.
31 ''' 31 """
32 32
33 def __init__(self, engine, promptlog=True, filelog=False): 33 def __init__(self, engine, promptlog=True, filelog=False):
34 ''' 34 """
35 Constructs new log manager 35 Constructs new log manager
36 @param engine: Engine to hook into 36 @param engine: Engine to hook into
37 @param promptlog: If true, logs to prompt 37 @param promptlog: If true, logs to prompt
38 @param filelog: If true, logs to file (fife.log) 38 @param filelog: If true, logs to file (fife.log)
39 ''' 39 """
40 self.engine = engine 40 self.engine = engine
41 self.lm = engine.getLogManager() 41 self.lm = engine.getLogManager()
42 self.lm.setLogToPrompt(promptlog) 42 self.lm.setLogToPrompt(promptlog)
43 self.lm.setLogToFile(filelog) 43 self.lm.setLogToFile(filelog)
44 self.mod2name = {} 44 self.mod2name = {}
46 if k.startswith('LM_') and k not in ('LM_CORE', 'LM_MODULE_MAX'): 46 if k.startswith('LM_') and k not in ('LM_CORE', 'LM_MODULE_MAX'):
47 self.mod2name[v] = self.lm.getModuleName(v) 47 self.mod2name[v] = self.lm.getModuleName(v)
48 self.name2mod = dict([(v.lower(), k) for k, v in self.mod2name.items()]) 48 self.name2mod = dict([(v.lower(), k) for k, v in self.mod2name.items()])
49 49
50 def addVisibleModules(self, *names): 50 def addVisibleModules(self, *names):
51 ''' 51 """
52 Adds modules that are visible in logs. By default, all modules 52 Adds modules that are visible in logs. By default, all modules
53 are disabled. Does not remove previously visible modules 53 are disabled. Does not remove previously visible modules
54 @param names: module names to set visible 54 @param names: module names to set visible
55 @see modules.h file for available modules in the engine 55 @see: modules.h file for available modules in the engine
56 ''' 56 """
57 names = [n.lower() for n in names] 57 names = [n.lower() for n in names]
58 if 'all' in names: 58 if 'all' in names:
59 for k in self.mod2name.keys(): 59 for k in self.mod2name.keys():
60 self.lm.addVisibleModule(k) 60 self.lm.addVisibleModule(k)
61 else: 61 else:
64 self.lm.addVisibleModule(self.name2mod[m]) 64 self.lm.addVisibleModule(self.name2mod[m])
65 except KeyError: 65 except KeyError:
66 print 'Tried to enable non-existing log module "%s"' % m 66 print 'Tried to enable non-existing log module "%s"' % m
67 67
68 def removeVisibleModules(self, *names): 68 def removeVisibleModules(self, *names):
69 ''' 69 """
70 Removes modules that are visible in logs. By default, all modules 70 Removes modules that are visible in logs. By default, all modules
71 are disabled. 71 are disabled.
72 @param names: module names to set invisible 72 @param names: module names to set invisible
73 @see addVisibleModules 73 @see: addVisibleModules
74 ''' 74 """
75 names = [n.lower() for n in names] 75 names = [n.lower() for n in names]
76 if 'all' in names: 76 if 'all' in names:
77 for k in self.mod2name.keys(): 77 for k in self.mod2name.keys():
78 self.lm.removeVisibleModule(k) 78 self.lm.removeVisibleModule(k)
79 else: 79 else:
80 for m in names: 80 for m in names:
81 self.lm.removeVisibleModule(self.name2mod[m]) 81 self.lm.removeVisibleModule(self.name2mod[m])
82 82
83 def getVisibleModules(self): 83 def getVisibleModules(self):
84 ''' 84 """
85 Gets currently visible modules 85 Gets currently visible modules
86 @see addVisibleModules 86 @see: addVisibleModules
87 ''' 87 """
88 mods = [] 88 mods = []
89 for k in self.mod2name.keys(): 89 for k in self.mod2name.keys():
90 if self.lm.isVisible(k): 90 if self.lm.isVisible(k):
91 mods.append(self.mod2name[k]) 91 mods.append(self.mod2name[k])
92 92
93 def setVisibleModules(self, *names): 93 def setVisibleModules(self, *names):
94 ''' 94 """
95 Sets visible modules. Clears previously set modules. 95 Sets visible modules. Clears previously set modules.
96 @param names: module names to set visible 96 @param names: module names to set visible
97 @see addVisibleModules 97 @see: addVisibleModules
98 ''' 98 """
99 self.lm.clearVisibleModules() 99 self.lm.clearVisibleModules()
100 self.addVisibleModules(*names) 100 self.addVisibleModules(*names)
101
102 def setLevelFilter(self, fltr):
103 """
104 Sets the minimum log level to view.
105 @param fltr: The filter level
106 """
107 self.lm.setLevelFilter(fltr)
108
109 def log_debug(self, message):
110 self.lm.log(0, self.name2mod["script"], message)
111
112 def log_log(self, message):
113 self.lm.log(1, self.name2mod["script"], message)
114
115 def log_warn(self, message):
116 self.lm.log(2, self.name2mod["script"], message)
117
118 def log_error(self, message):
119 self.lm.log(3, self.name2mod["script"], message)