python logging

class TNLog(object):
def __init__(self, log_dir, context, verbose):
if not os.path.exists(log_dir):
os.mkdir(log_dir)

self.context = context
self.root_log_dir = log_dir
self.verbose = verbose

self.formatter = logging.Formatter(
'%(asctime)s-%(levelname)s:' + self.context + ':[%(filename)s:%(lineno)3d]:%(message)s',
datefmt='%Y-%m-%d %H:%M:%S')

# create log dir
self.log_dir = time.strftime('%Y-%m-%d', time.localtime())

self._create_logger()

def _create_logger(self):
"""
create logger
:return:
"""
self.loggers = {}

if not os.path.exists(os.path.join(self.root_log_dir, self.log_dir)):
os.mkdir(os.path.join(self.root_log_dir, self.log_dir))

handlers = {logging.DEBUG: os.path.join(os.path.join(self.root_log_dir, self.log_dir), 'DEBUG.log'),
logging.INFO: os.path.join(os.path.join(self.root_log_dir, self.log_dir), 'INFO.log'),
logging.WARNING: os.path.join(os.path.join(self.root_log_dir, self.log_dir), 'WARNING.log'),
logging.ERROR: os.path.join(os.path.join(self.root_log_dir, self.log_dir), 'ERROR.log')}
levels = handlers.keys()
for level in levels:
logger = logging.getLogger(str(level))
logger.setLevel(level)

file_handler = logging.FileHandler(handlers[level], encoding='utf-8')
file_handler.setLevel(level)
file_handler.setFormatter(self.formatter)
logger.handlers = []
logger.addHandler(file_handler)

self.loggers[level] = logger

def _change_file_handler(self):
"""
change file handler
:return:
"""
if not time.strftime('%Y-%m-%d', time.localtime()) == self.log_dir:
self.loggers = {}

self.log_dir = time.strftime('%Y-%m-%d', time.localtime())
self._create_logger()

def info(self, msg):
"""
log info level
:param msg: log message
:return:
"""
print(self._time+'-INFO:%s:%s' % (self.context, msg), flush=True)
self._change_file_handler()
self.loggers[logging.INFO].info(msg)

def error(self, msg):
"""
log error level
:param msg: log message
:return:
"""
print(self._time+'-ERROR:%s:%s' % (self.context, msg), flush=True)
self._change_file_handler()
self.loggers[logging.ERROR].error(msg)

def debug(self, msg):
"""
log debug level
:param msg: log message
:return:
"""
if self.verbose:
print(self._time+'-DEBUG:%s:%s' % (self.context, msg), flush=True)

self._change_file_handler()
self.loggers[logging.DEBUG].debug(msg)

def warning(self, msg):
"""
log warning level
:param msg: log message
:return:
"""
print(self._time + '-ERROR:%s:%s' % (self.context, msg), flush=True)
self._change_file_handler()
self.loggers[logging.WARNING].error(msg)

@property
def _time(self):
return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

 

转载于:https://www.cnblogs.com/callyblog/p/10388543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值