# Copyright 2015 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= class Logger(object): def __init__(self): self._outputs = [] self._indentation = 2 self._level = 0 def add_output_file(self, output, quiet=None): self._outputs.append((output, quiet)) def drop_output_file(self, output): self._outputs = [(o, q) for o, q in self._outputs if o != output] def set_indentation(self, indentation): self._indentation = indentation def __enter__(self): self._level += 1 def __exit__(self, *args): self._level -= 1 def log(self, quietable, msg, **kwargs): indent = ' ' * self._indentation * self._level for f, quiet in self._outputs: if not quiet or not quietable: f.write(indent + msg.format(**kwargs) + '\n') f.flush() def important(self, msg, **kwargs): # pragma: no cover self.log(False, msg, **kwargs) def chatty(self, msg, **kwargs): # pragma: no cover self.log(True, msg, **kwargs)