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

logger = Logger().getLogger()

logger.info(' message ')

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

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

import time

from weather.common.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---------------

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

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

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

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

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

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

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

[2019-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

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

  1. python调用接口查询_python调用接口查询 顺丰单号 物流信息

    爱查快递 查询 顺丰单号 物流信息 Query.sign = function() { function t(t) { var e, i, s, a, r = -1; for (e = 0, s = ...

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

    Logger是使用logging封装的一个日志类, 每次使用的时候都要实例化一下: logger = Logger().getLogger() logger.info(' message ') 不想每 ...

  3. 【Python】解决Python调用接口返回带菱形问号和乱码

    现象: python调用接口Print(response.text)返回菱形问号或乱码时, 解决方法: 请求头应该添加"Accept-Encoding":"deflate ...

  4. java怎么调用另一个类的方法_在一个类中访问另一个类的方法

    在一个类中访问另一个类的方法 由于Java应用程序是由若干个类构成的,因此经常需要在一个类中访问另一个类中的成员和方法,请问应该如何在一个类中访问另一个类的方法?下面是由百分网小编为大家整理的在一个类 ...

  5. java类里面再定一个类_java类的里面可以再定义一个类吗 java里可不可以在一个...

    java类里面还可以定义一个类,即内部类. java内部类分为: 成员内部类.静态嵌套类.方法内部类.匿名内部类 . 内部类的共性 (1).内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的. ...

  6. python 创建对象时自动调用的函数_Python自动测试(6)——类和对象,python,自动化,六类...

    类和函数对象概念 类 :同一类的事物,是个抽象的概念(属性.方法) 对象 :符合类描述的具体存在的 例如把电脑当做是一个类,然后你现在所使用的具体存在的电脑就是对象. 为什么要封装类?举个例子,ATM ...

  7. python调用接口上传文件_python上传文件接口

    文件的参数组装: ('文件名',"open打开的文件(rb模式打开)",'文件的类型说明') 关于不同的请求参数类型,使用requests的处理: 1.文件上传(Content-T ...

  8. python做接口外部调用_python使用suds调用外部接口

    查看webservice接口函数@classmethod def get_methods(cls, client): """ 查看服务接口 :param client:  ...

  9. python调用java方法_python调用java

    一.环境确认: 首先,要确认安装的jdk版本是1.8以上:其次,jdk安装位数与python安装的位数一致,及要么一起64位版本要么一起32版本. (以上2点不满足均会报错,比如:not found ...

最新文章

  1. redispython源文件_Redis与Python在项目中的交互
  2. Android 源码编译及常见错误及解决方法
  3. 分割平面、空间问题 数学公式
  4. P2839 [国家集训队]middle
  5. “暧昧”的吉本,“疗伤”的芭娜娜
  6. 爬取猎聘python_爬取猎聘大数据岗位相关信息--Python
  7. 关于浏览器模式和文本模式的困惑
  8. 三大场景,对象存储OSS带你快速上云
  9. 新四则运算 合作完成
  10. java获取手机安装app_Android之——获取手机安装的应用程序
  11. STM32用IAR调试出现Error[Pe020]: identifier FILE is undefined 解决方法
  12. MyBatis解析<if>动态sql时,Integer类型值为0,返回false
  13. 软件需求说明书模板1
  14. 中央预算单位银行账户管理系统单机版2021--运行环境配置指南
  15. verilog实现N分频电路
  16. TrueCrypt 使用经验[3]:关于加密
  17. 极案例 | 守护地铁运营“生命线”,极视角与深圳地铁运管办共建“AI智能巡检系统”
  18. Vue实例生命周期函数(钩子函数)详解
  19. fMRI中自发性短暂脑网络交互的行为相关性
  20. duffing matlab,duffing方程matlab

热门文章

  1. AC解 - Phone List(HDOJ#1671) 前缀树的一个应用
  2. 我司那产品经理丨第四期
  3. PMcaff微课堂 | 洋葱淘elya妞,前百度UX Leader:独门创业经验,产品秘籍
  4. 【干货】产品运营中极具战略意义的环节:数据分析
  5. 【pmcaff】其实一直有一个人在默默关注你
  6. PHP7扩展开发(二):配置项与全局数值
  7. 基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#)
  8. 数据库密码加密公用秘要生成器,数据库密码加密解密入口
  9. 提高PHP代码质量需要注意的地方三
  10. TNS-04404 dbca