In [1]: #欢迎来到“只读课堂”!
...: #今天,我们迎来了我们只读课堂Python高级的第一堂课——Python 必备技能之日志记录
...:
...: #下面通过一个比喻来介绍一下将字符打印到屏幕上的历史方式:
...:
...: #打log的进化史
...: # · 游击队——print
...: # · 有纪律的游击队——log函数
...: # · 正规军——logging
...: # · 具有远程打击能力的常规部队——request + nginx
...: # · 信息化特种部队——ELK
...:
...: #今天我们就给大家讲“正规军”的方式,希望以后大家不要再保持“游击队”的方式哦!
...:
...: #正规军——logging模块
...: # 1.logging是Python内置的模块;
...: # 2.logging是可配置的专业级日志工具;
...: # 3.logging的使用例子:
...: import logging
...: logger = logging.getLogger(__name__)
...: logger.info("hello word")
...: #只需三行代码
...:
In [2]: #日志是可配置的:
In [3]: #一,常用的日志级别(从上到下,等级一次提升)(
In [4]: # 1.DEGUG
In [5]: # 2.INFO
In [6]: #3.WARNING
In [7]: # 4.ERROR
In [8]: # 5.CRITICAL
In [9]: #前四个是最常用的。
In [10]: #以上5个内容调用方法:
In [11]: # 1. logger.debug("")
In [12]: # 2. logger.info("")
In [13]: # 3. logger.warning("")
In [14]: # 4. logger.error("")
In [15]: # 5. logger.critical("")
In [16]: #——————————————————————————————————————————————————————————————————————
In [17]: # Q:什么时候用到debug做等级?
In [18]: # A:做测试的时候。
In [19]: #——————————————————————————————————————————————————————————————————————
In [20]: #在日志记录过程中,如果是程序员,一般忽略”警告“,因为程序还是可以运行的。
In [21]: logger.debug("hello")
In [22]: #基本的配置
In [23]: # · 配置内容格式
In [24]: # · 配置日志等级
In [25]: #是”配置日志登记“
In [26]: # · 配置处理方式
In [26]:
In [27]: #出了错误,要查问题时,warning才可能会有意义,平时的运行中warning基本没啥意义
In [28]: def main(a=None):
...: logger.debug(f"程序开始了,获取到的参数是{a}")
...:
...: b = f'say:{a}'
...:
...: logger.info(f"程序结束了,返回值是:{b}")
...: return b
...:
In [29]: #打出这些代码,在Spyder运行。它将会把logger的内容打印在控制台。代码高级,日志等级就更高。
In [30]: #——————————————————————————————————————————————————————————————————————
In [31]: #更丰富的配置
In [31]:
In [32]: # · 使用 dict 进行配置
In [33]: # · 使用 json文件 进行配置
In [34]: # · 使用 yaml文件进行配置
In [35]: #——————————————————————————————————————————————————————————————————————
In [36]: #日志记录代码:(直接拷贝到你的Spyder或python程序中):
In [37]: import logging, sys
...:
...: logger - logging.getLogger(__name__)
...: logger.setLevel(logging.INFO)
...:
...: formatter - logging.formatter('[%(name)s] %(asctime)s %(levelname)-8s: %(message)s')
...:
...: #基于控制台的日志处理
...: console_handler = logging.StreamHandler(sys.stdout)
...: console_handler.setFormatter(formatter)
...:
...: #基于 文件的日志处理
...: file_handler = logging.FileHandler("my.log")
...: file_handler.setFormatter(formatter)
...:
...: logger.addHandler(console_handler)
...: logger.addHandler(file_handler)
...:
...: def main(a=None):
...: logger.debug(f"程序开始执行了,获取到的参数是:{a}")
...:
...: b = f'{a}'
...:
...: logger.info(f"程序执行结束了,返回值是:{b}")
...: return b
...:
...: if __name__ == '__main__':
...: print(main(2333))
...:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-32b515e80423> in <module>()
1 import logging, sys
2
----> 3 logger - logging.getLogger(__name__)
4 logger.setLevel(logging.INFO)
5
TypeError: unsupported operand type(s) for -: 'Logger' and 'Logger'
In [38]: #这些代码在这里是不适用的,那些错误先不要管。
In [39]: #——————————————————————————————————————————————————————————————————————
In [40]: #如果代码运行成功,程序运行时的日志全部会自动打印到屏幕上,要保存就把它们拷下来就行了。日志差不多是下面这样的:
In [41]: # 目录 日期 时间 运行的事情
In [42]: #它将会随时记录程序的一举一动,当然有时候也可能出现定时日志重启,所以注意保存。
In [43]: print("\n本次“只读课堂”的python教程就到这了,欢迎继续收看!\n")
本次“只读课堂”的python教程就到这了,欢迎继续收看!