Package fife :: Package extensions :: Module fifelog
[hide private]
[frames] | no frames]

Source Code for Module fife.extensions.fifelog

  1  # -*- coding: utf-8 -*- 
  2   
  3  # #################################################################### 
  4  #  Copyright (C) 2005-2019 by the FIFE team 
  5  #  http://www.fifengine.net 
  6  #  This file is part of FIFE. 
  7  # 
  8  #  FIFE is free software; you can redistribute it and/or 
  9  #  modify it under the terms of the GNU Lesser General Public 
 10  #  License as published by the Free Software Foundation; either 
 11  #  version 2.1 of the License, or (at your option) any later version. 
 12  # 
 13  #  This library is distributed in the hope that it will be useful, 
 14  #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 15  #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
 16  #  Lesser General Public License for more details. 
 17  # 
 18  #  You should have received a copy of the GNU Lesser General Public 
 19  #  License along with this library; if not, write to the 
 20  #  Free Software Foundation, Inc., 
 21  #  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA 
 22  # #################################################################### 
 23   
 24  from __future__ import print_function 
 25  from builtins import object 
 26  from fife import fife 
 27   
28 -class LogManager(object):
29 """ 30 Log manager provides convenient apis to access engine logging functionality. 31 You can set log targets individually (prompt, file). You can also adjust 32 things like visible modules through log manager. 33 """ 34
35 - def __init__(self, engine, promptlog=True, filelog=False):
36 """ 37 Constructs new log manager 38 @param engine: Engine to hook into 39 @param promptlog: If true, logs to prompt 40 @param filelog: If true, logs to file (fife.log) 41 """ 42 self.engine = engine 43 self.lm = engine.getLogManager() 44 self.lm.setLogToPrompt(promptlog) 45 self.lm.setLogToFile(filelog) 46 self.mod2name = {} 47 for k, v in list(fife.__dict__.items()): 48 if k.startswith('LM_') and k not in ('LM_CORE', 'LM_MODULE_MAX'): 49 self.mod2name[v] = self.lm.getModuleName(v) 50 self.name2mod = dict([(v.lower(), k) for k, v in list(self.mod2name.items())])
51
52 - def addVisibleModules(self, *names):
53 """ 54 Adds modules that are visible in logs. By default, all modules 55 are disabled. Does not remove previously visible modules 56 @param names: module names to set visible 57 @see: modules.h file for available modules in the engine 58 """ 59 names = [n.lower() for n in names] 60 if 'all' in names: 61 for k in list(self.mod2name.keys()): 62 self.lm.addVisibleModule(k) 63 else: 64 for m in names: 65 try: 66 self.lm.addVisibleModule(self.name2mod[m]) 67 except KeyError: 68 print('Tried to enable non-existing log module "%s"' % m)
69
70 - def removeVisibleModules(self, *names):
71 """ 72 Removes modules that are visible in logs. By default, all modules 73 are disabled. 74 @param names: module names to set invisible 75 @see: addVisibleModules 76 """ 77 names = [n.lower() for n in names] 78 if 'all' in names: 79 for k in list(self.mod2name.keys()): 80 self.lm.removeVisibleModule(k) 81 else: 82 for m in names: 83 self.lm.removeVisibleModule(self.name2mod[m])
84
85 - def getVisibleModules(self):
86 """ 87 Gets currently visible modules 88 @see: addVisibleModules 89 """ 90 mods = [] 91 for k in list(self.mod2name.keys()): 92 if self.lm.isVisible(k): 93 mods.append(self.mod2name[k])
94
95 - def setVisibleModules(self, *names):
96 """ 97 Sets visible modules. Clears previously set modules. 98 @param names: module names to set visible 99 @see: addVisibleModules 100 """ 101 self.lm.clearVisibleModules() 102 self.addVisibleModules(*names)
103
104 - def setLevelFilter(self, fltr):
105 """ 106 Sets the minimum log level to view. 107 108 @param fltr: The filter level 109 110 Valid values: 111 - L{fife.LogManager.LEVEL_DEBUG} 112 - L{fife.LogManager.LEVEL_LOG} 113 - L{fife.LogManager.LEVEL_WARN} 114 - L{fife.LogManager.LEVEL_ERROR} 115 """ 116 self.lm.setLevelFilter(fltr)
117
118 - def setLogToPrompt(self, promptlog):
119 return self.lm.setLogToPrompt(promptlog)
120
121 - def getLogToPrompt(self):
122 return self.lm.isLogToPrompt()
123 124 logToPrompt = property(getLogToPrompt, setLogToPrompt) 125
126 - def setLogToFile(self, filelog):
127 return self.lm.setLogToFile(filelog)
128
129 - def getLogToFile(self):
130 return self.lm.isLogToFile()
131 132 logToFile = property(getLogToFile, setLogToFile) 133
134 - def log_debug(self, message):
135 self.lm.log(0, self.name2mod["script"], message)
136
137 - def log_log(self, message):
138 self.lm.log(1, self.name2mod["script"], message)
139
140 - def log_warn(self, message):
141 self.lm.log(2, self.name2mod["script"], message)
142
143 - def log_error(self, message):
144 self.lm.log(3, self.name2mod["script"], message)
145