700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python调用接口实例化_python 类静态方法实例化另一个类对象的问题?

python调用接口实例化_python 类静态方法实例化另一个类对象的问题?

时间:2019-03-17 02:49:59

相关推荐

python调用接口实例化_python 类静态方法实例化另一个类对象的问题?

Logger是使用logging封装的一个日志类, 每次使用的时候都要实例化一下:

logger = Logger().getLogger()

logger.info(' message ')

不想每次实例化, 然后新加了一个类Logg 里面定义了对应各个日志级别的静态方法:

但是测试一下却输出了很多日志, 为什么呢?

import time

from mon.libs.logger import Logger

class Logg(object):

@staticmethod

def info(message):

print("info---------------")

log = Logger().getLogger()

log.info(message)

if __name__ == '__main__':

for i in range(3):

Logg.info('testing..')

time.sleep(1)

输出结果::::

info---------------

[-09-18 17:17:58,679][root][INFO]-logg.py-info:line:14 testing..

info---------------

[-09-18 17:17:59,679][root][INFO]-logg.py-info:line:14 testing..

[-09-18 17:17:59,679][root][INFO]-logg.py-info:line:14 testing..

info---------------

[-09-18 17:18:00,681][root][INFO]-logg.py-info:line:14 testing..

[-09-18 17:18:00,681][root][INFO]-logg.py-info:line:14 testing..

[-09-18 17:18:00,681][root][INFO]-logg.py-info:line:14 testing..

附加 Logger 类代码:

class Logger(object):

level_relations = {

'debug': logging.DEBUG,

'info': logging.INFO,

'warning': logging.WARNING,

'error': logging.ERROR,

'crit': logging.CRITICAL

} # 日志级别关系映射

def __init__(self, logger=None, level='info'):

# create logger

self.logger = logging.getLogger(logger)

self.logger.setLevel(self.level_relations.get(level))

# 创建一个handler,用于写入日志文件

self._log_time = time.strftime("%Y_%m_%d")

self._log_path = os.path.dirname(os.path.dirname(os.getcwd())) + os.sep + 'log' + os.sep + self._log_time

# check log file path

if not os.path.exists(self._log_path):

os.makedirs(self._log_path)

self._log_name = self._log_path + os.sep + 'log.log'

formatter = logging.Formatter('[%(asctime)s][%(name)s][%(levelname)s]-%(filename)s-%(funcName)s:line:%(lineno)d\t%(message)s')

fh = logging.FileHandler(self._log_name, 'a', encoding='utf-8')

# fh.setLevel(logging.INFO)

fh.setFormatter(formatter)

# 创建一个handler,用于输出到控制台

ch = logging.StreamHandler()

# ch.setLevel(logging.INFO)

ch.setFormatter(formatter)

# 给logger添加handler

self.logger.addHandler(fh)

self.logger.addHandler(ch)

# 关闭打开的文件

fh.close()

ch.close()

def getLogger(self):

return self.logger

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。