首页 > 编程语言 >python内置模块loggin日志实现单例封装

python内置模块loggin日志实现单例封装

时间:2022-10-11 14:02:46浏览次数:45  
标签:__ logger file python loggin handler 单例 日志 self

 1 import logging
 2 from configs.global_data import Logger
 3 
 4 
 5 class LogHandler:
 6     obj = None
 7 
 8     def __init__(self):
 9         self.file_name = Logger.file_name  # 调用配置文件Logger类属性
10         self.logger_level = Logger.logger_level
11         self.file_handler_level = Logger.file_handler_level
12         self.console_handler_level = Logger.console_handler_lever
13         self.fmt = Logger.fmt
14 
15     def __new__(cls, *args, **kwargs):
16         """
17         实现单例模式
18         :param args:
19         :param kwargs:
20         """
21         if cls.obj is None:  # 如果obj对象不存在,则调用父类进行创建
22             cls.obj = object.__new__(cls)
23         return cls.obj  # 存在直接返回
24 
25     def log(self):
26         # 1、创建日志收集器
27         logger = logging.getLogger("log")
28         logger.setLevel(self.logger_level)  # 设置日志收集器级别,只在日志生成是生效
29         # 2、创建日志处理器
30         # 2.1、创建文件日志处理器,将日志输出到文件
31         file_handler = logging.FileHandler(self.file_name, encoding="utf-8")
32         file_handler.setLevel(self.file_handler_level)
33         # 2.2、创建控制台日志处理器,将日志输出到控制台
34         console_handler = logging.StreamHandler()
35         console_handler.setLevel(self.console_handler_level)
36         # 3、创建日志格式器
37         fmt = logging.Formatter(fmt=self.fmt)
38         # 4、给日志处理器添加日志格式器
39         file_handler.setFormatter(fmt)
40         console_handler.setFormatter(fmt)
41         # 5、给日志收集器添加日志处理器
42         logger.addHandler(file_handler)
43         logger.addHandler(console_handler)
44         return logger
45 
46 
47 if __name__ == '__main__':
48     log = LogHandler().log()
49     log.debug("这个是调试级别日志")
50     log.info("这个是用户操作日志")
51     log.error("这个是错误级别日志")
52     log.warning("这个是警告级别日志")

 

标签:__,logger,file,python,loggin,handler,单例,日志,self
From: https://www.cnblogs.com/Nichs/p/16778964.html

相关文章

  • (Python)使用 HTMLTestRunner 实现 unittest 报告生成
    1.下载HTMLTestRunner文件地址: http://tungwaiyip.info/software/HTMLTestRunner.html 2.将.py文件保存到 \Python37\Lib\site-packages 3.将 HTMLTestRu......
  • Python数据分析-基于pandas的数据清洗
    一、处理丢失数据(1)丢失数据的类型1)None2)np.nan(NaN)两种丢失数据的区别:type(None)NoneTypetype(np.nan)float 为什么在......
  • nginx python webpy 配置安装
    安装webpy$wgethttp://webpy.org/static/web.py-0.34.tar.gz$tarxvzfweb.py-0.34.tar.gz$cdweb.py-0.34$sudopythonsetup.pyinsta......
  • Python函数-5
    Python函数-4的补充和修订:修正一下上个博客的代码块中的del应改为def,深感歉意。补充一下返回值函数的样式:def函数名:return代码(值)一.函数的作用域有两种,一个......
  • python 联邦学习库 syft安装
    python联邦学习库syft安装新建一个新的环境(注意先不用安装pytorch,容易有pysyft和pytorch版本不对应,或者有些pytorch版本不支持pysyft的情况,然后报错):      ......
  • Python文件和目录操作
    创建目录1、os.makedirs可以递归的创建目录结构例如:importosos.makedirs('路径(可以是相对路径也可以是绝对路径)',exist_ok=True)exist_ok=True指定了,如果某个要......
  • Python工具箱系列(九)
    在计算机世界里,信息安全始终占据着重要的地位,我们随处就可以看到信息安全的应用:◆访问网站时,使用https而不是http会使访问者的安全性大大提升◆下载文件时,正规的网站都......
  • python + selenium 新手随笔 元素定位
    1.fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeys//Key表示键盘上的键,By定位文本中的元素fromselenium.webdriver.common.by......
  • 力扣594(java&python)-最长和谐子序列(简单)
    题目:和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给你一个整数数组nums,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序......
  • python study
    pythonpycharmPythonpip安装与使用pythonpippipinstallpyqt5pipinstallpyqt5_toolsqtdesigner就在python目录下:.\Python36\Lib\site-packages\pyqt5-tools。pyqt5_to......