Python不归路_logging模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python不归路_logging模块相关的知识,希望对你有一定的参考价值。

Logging模块学习

1、Logging的五个等级

debug:诊断性的信息

info:确认一切按预期运行

warning:警告性信息,如CPU负载过高,硬盘空间少

error:更严重的事情,但系统还能运行

critical:系统无法继续运行

这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。

2、将日志输出到屏幕

  2.1简单输出

1 import logging
2 logging.warning(this is a warning message)
3 logging.error(this is a error message)
4 
5 #输出
6 WARNING:root:this is a warning message
7 ERROR:root:this is a error message

   只有WARNING或之上的才会输出至屏幕。

  2.2logging.basicConfig()函数输出 

1 logging.basicConfig(format=%(asctime)s %(message)s)
2 logging.warning(this is a warning message)
3 logging.error(this is a error message)
4 
5 #输出
6 
7 2017-11-09 14:52:05,311 this is a warning message
8 2017-11-09 14:52:05,311 this is a error message  

  logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息:

  %(levelno)s: 打印日志级别的数值
  %(levelname)s: 打印日志级别名称
  %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
  %(filename)s: 打印当前执行程序名
  %(funcName)s: 打印日志的当前函数
  %(lineno)d: 打印日志的当前行号
  %(asctime)s: 打印日志的时间
  %(thread)d: 打印线程ID
  %(threadName)s: 打印线程名称
  %(process)d: 打印进程ID
  %(message)s: 打印日志信息

  常用的格式:

1 logging.basicConfig(format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s)
2 logging.warning(this is a warning message)
3 logging.error(this is a error message)
4 
5 #输出
6 
7 2017-11-09 15:06:14,915 logging模块.py[line:8] WARNING this is a warning message
8 2017-11-09 15:06:14,915 logging模块.py[line:9] ERROR this is a error message

3、将日志出输出至文件

 

 1 logging.basicConfig(level=logging.ERROR,format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s,filename=d:\\111.log,filemode=w)
 2 logging.warning(this is a warning message)
 3 logging.error(this is a error message)
 4 with open(d:\\111.log,r) as f:
 5     for lines in f.readlines():
 6         print(lines)
 7 
 8 #输出
 9 
10 2017-11-09 16:45:44,998 logging模块.py[line:9] ERROR this is a error message

上面的代码比2.2中新添加了日志等级和文件存储。’level = logging.INFO‘,‘filename=‘d:\\111.log‘,filemode=‘w‘’。

4、将日志同时输出至屏幕和文件

具体步骤

  

 1 logger = logging.getLogger()
 2 logger.setLevel(logging.DEBUG)  #记录日志等级的总开关
 3 
 4 logfile = d:\\333.log
 5 fh = logging.FileHandler(logfile,mode=w)  #文件存储位置
 6 fh.setLevel(logging.INFO)  #记录日志等级
 7 
 8 sh = logging.StreamHandler()   #输出屏幕
 9 sh.setLevel(logging.WARNING)   #记录日志等级
10 
11 geshi = logging.Formatter(%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:%(message)s)   #日志输出格式
12 fh.setFormatter(geshi)
13 sh.setFormatter(geshi)
14 
15 logger.addHandler(sh)  #添加Handler
16 logger.addHandler(fh)
17 
18 
19 logger.info(this is a INFO message)
20 logger.warning(this is a WARNING message)
21 logger.debug(this is a DEBUG message)
22 
23 
24 输出
25 
26 2017-11-10 11:40:00,035 - logging模块.py[line:34] - WARNING:this is a WARNING message

  handler对象负责发送相关的信息到指定目的地。Python的日志系统有多种Handler可以使用。有些Handler可以把信息输出到控制台,有些Logger可以把信息输出到文件,还有些 Handler可以把信息发送到网络上。如果觉得不够用,还可以编写自己的Handler。可以通过addHandler()方法添加多个多handler。比如上面代码中输出至文件FileHandler()和标准输出SteamHandler()。

  

 

 

    

 











以上是关于Python不归路_logging模块的主要内容,如果未能解决你的问题,请参考以下文章

Python不归路_configparser模块

Python不归路_os和system模块

Python不归路_xml.etree.ElementTree模块

Python不归路_装饰器

Python不归路_装饰器

Python不归路_生成器