Source code for lipyd.log

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
#  This file is part of the `lipyd` python module
#
#  Copyright (c) 2015-2018 - EMBL
#
#  File author(s): Dénes Türei (turei.denes@gmail.com)
#
#  Distributed under the GNU GPLv3 License.
#  See accompanying file LICENSE.txt or copy at
#      http://www.gnu.org/licenses/gpl-3.0.html
#
#  Website: http://www.ebi.ac.uk/~denes
#

import time
import os


[docs]class Logger(object): strftime = time.strftime def __init__(self, fname, verbosity = 0, logdir = None): self.logdir = self.get_logdir(logdir) self.fname = os.path.join(self.logdir, fname) self.verbosity = verbosity self.open_logfile() self.msg('Welcome!') self.msg('Logger started, logging into `%s`.' % self.fname)
[docs] def msg(self, msg = '', level = 0): if level <= self.verbosity: self.fp.write('[%s] %s\n' % (self.timestamp(), msg))
[docs] @classmethod def timestamp(cls): return cls.strftime('%Y-%m-%d %H:%M:%S')
def __del__(self): self.msg('Logger shut down, logfile `%s` closed.' % self.fname) self.msg('Bye.') self.close_logfile()
[docs] def get_logdir(self, dirname = None): dirname = dirname or 'lipyd_log' if not os.path.isdir(dirname): os.mkdir(dirname) return dirname
[docs] def open_logfile(self): self.close_logfile() self.fp = open(self.fname, 'w')
[docs] def close_logfile(self): if hasattr(self, 'fp') and not self.fp.closed: self.fp.close()
[docs] def flush(self): if hasattr(self, 'fp') and not self.fp.closed: self.fp.flush()