Changeset 442 for trunk/src/__init__.py
- Timestamp:
- 11/11/09 17:02:19 (3 years ago)
- Files:
-
- 1 modified
-
trunk/src/__init__.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/__init__.py
r441 r442 39 39 __version__ = "0.1.0 (Asynchronous Astrocyte)" 40 40 import warnings 41 from operator import __or__ 41 42 42 43 ######################################################### … … 126 127 127 128 # Add a header() level to logging 128 logging.HEADER = 60129 logging.HEADER = (logging.WARNING + logging.ERROR)/2 # higher than warning, lower than error 129 130 logging.addLevelName(logging.HEADER, 'HEADER') 130 131 … … 168 169 } 169 170 170 def __init__(self, fmt=None, datefmt=None, colours=DEFAULT_COLOURS ):171 def __init__(self, fmt=None, datefmt=None, colours=DEFAULT_COLOURS, mpi_rank=None): 171 172 logging.Formatter.__init__(self, fmt, datefmt) 172 173 self._colours = colours 173 174 self._indents = FancyFormatter.DEFAULT_INDENTS 175 if mpi_rank is None: 176 self.prefix = "" 177 else: 178 self.prefix = "%-3d" % mpi_rank 174 179 175 180 def format(self, record): … … 179 184 if self._colours: 180 185 s = colour(self._colours[record.levelname], s) 181 return self. _indents[record.levelname] + s186 return self.prefix + self._indents[record.levelname] + s 182 187 183 188 184 189 class NameOrLevelFilter(logging.Filter): 185 190 """ 186 Logging filter which allows messages that either meet the same name criteria187 as the base filter class, orhave a level >= the level specified.191 Logging filter which allows messages that either have an approved name, or 192 have a level >= the level specified. 188 193 189 194 The intended use is when you want to receive most messages at a high level, … … 191 196 particular component. 192 197 """ 193 def __init__(self, name='', level=logging.INFO): 194 self.name = name 195 self.nlen = len(name) 198 def __init__(self, names=[], level=logging.INFO): 199 self.names = names 196 200 self.level = level 197 201 198 202 def filter(self, record): 199 allow_by_name = logging.Filter.filter(self, record) 203 if len(self.names) == 0: 204 allow_by_name = True 205 else: 206 allow_by_name = record.name in self.names 200 207 allow_by_level = record.levelno >= self.level 201 208 return (allow_by_name or allow_by_level) 202 203 204 def init_logging(filename, file_level=logging.INFO, console_level=logging.WARNING): 209 210 211 def init_logging(filename, file_level=logging.INFO, console_level=logging.WARNING, mpi_rank=None): 212 if mpi_rank is None: 213 mpi_fmt = "" 214 else: 215 mpi_fmt = "%3d " % mpi_rank 205 216 logging.basicConfig(level=file_level, 206 format='% (asctime)s %(name)-10s %(levelname)-6s %(message)s [%(pathname)s:%(lineno)d]',217 format='%%(asctime)s %s%%(name)-10s %%(levelname)-6s %%(message)s [%%(pathname)s:%%(lineno)d]' % mpi_fmt, 207 218 filename=filename, 208 219 filemode='w') 209 220 console = logging.StreamHandler() 210 221 console.setLevel(console_level) 211 console.setFormatter(FancyFormatter('%(message)s' ))222 console.setFormatter(FancyFormatter('%(message)s', mpi_rank=mpi_rank)) 212 223 logging.getLogger('').addHandler(console) 213 224 return console
