#!/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()