Python高级第1课——必备技能之日志记录(只读课堂)

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教程就到这了,欢迎继续收看!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值