|
import logging |
|
import os |
|
import sys |
|
import time |
|
|
|
|
|
project_name = os.getcwd().split('/')[-1] |
|
_logger = logging.getLogger(project_name) |
|
_logger.addHandler(logging.StreamHandler()) |
|
|
|
def _log_prefix(): |
|
|
|
|
|
def _get_file_line(): |
|
|
|
|
|
|
|
f = sys._getframe() |
|
|
|
our_file = f.f_code.co_filename |
|
f = f.f_back |
|
while f: |
|
code = f.f_code |
|
if code.co_filename != our_file: |
|
return code.co_filename, f.f_lineno |
|
f = f.f_back |
|
return '<unknown>', 0 |
|
|
|
|
|
now = time.time() |
|
now_tuple = time.localtime(now) |
|
now_millisecond = int(1e3 * (now % 1.0)) |
|
|
|
|
|
filename, line = _get_file_line() |
|
basename = os.path.basename(filename) |
|
|
|
s = '%02d-%02d %02d:%02d:%02d.%03d %s:%d] ' % ( |
|
now_tuple[1], |
|
now_tuple[2], |
|
now_tuple[3], |
|
now_tuple[4], |
|
now_tuple[5], |
|
now_millisecond, |
|
basename, |
|
line) |
|
|
|
return s |
|
|
|
|
|
def logging_verbosity(verbosity=0): |
|
_logger.setLevel(verbosity) |
|
|
|
|
|
def debug(msg, *args, **kwargs): |
|
_logger.debug('D ' + project_name + ' ' + _log_prefix() + msg, *args, **kwargs) |
|
|
|
|
|
def info(msg, *args, **kwargs): |
|
_logger.info('I ' + project_name + ' ' + _log_prefix() + msg, *args, **kwargs) |
|
|
|
|
|
def warn(msg, *args, **kwargs): |
|
_logger.warning('W ' + project_name + ' ' + _log_prefix() + msg, *args, **kwargs) |
|
|
|
|
|
def error(msg, *args, **kwargs): |
|
_logger.error('E ' + project_name + ' ' + _log_prefix() + msg, *args, **kwargs) |
|
|
|
|
|
def fatal(msg, *args, **kwargs): |
|
_logger.fatal('F ' + project_name + ' ' + _log_prefix() + msg, *args, **kwargs) |
|
|