python-日志模块

以下为python的logging模块,同时也有logbook模块。

 

一、日志保存到文件中:

 import logging

 logging.basicConfig(                                #通过具体的参数来更改logging模块默认行为;

     level=logging.ERROR,                                            #设置告警级别为ERROR;
     format="%(asctime)s---%(lineno)s----%(name)s: %(message)s",     #自定义打印的格式;
     filename="yinzhengjie.txt",                                     #将日志输出到指定的文件中;
     filemode="a",                                                   #以追加的方式将日志写入文件中,w是以覆盖写的方式哟;
 )

二、日志打印格式及format参数中可能用到的格式化串:

1>.%(name)s              Logger的名字
2>.%(levelno)s              数字形式的日志级别
3>.%(levelname)s            文本形式的日志级别
4>.%(pathname)s             调用日志输出函数的模块的完整路径名,可能没有

5>.%(filename)s             调用日志输出函数的模块的文件名
6>.%(module)s             调用日志输出函数的模块名
7>.%(funcName)s             调用日志输出函数的函数名
8>.%(lineno)d              调用日志输出函数的语句所在的代码行
9>.%(created)f              当前时间,用UNIX标准的表示时间的浮 点数表示

10>.%(relativeCreated)d         输出日志信息时的,自Logger创建以 来的毫秒数
11>.%(asctime)s            字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
12>.%(thread)d              线程ID。可能没有
13>.%(threadName)s          线程名。可能没有
14>.%(process)d            进程ID。可能没有
15>.%(message)s            用户输出的消息

 

三、日志的级别:

import logging

logging.debug("debug message") #告警级别最低,只有在诊断问题时才有兴趣的详细信息。

logging.info("info message") #告警级别比debug要高,确认事情按预期进行。

logging.warning("warning message") #告警级别比info要高,该模式是默认的告警级别!预示着一些意想不到的事情发生,或在不久的将来出现一些问题(例如“磁盘空间低”)。该软件仍在正常工作。

logging.error("error message") #告警级别要比warning要高,由于一个更严重的问题,该软件还不能执行某些功能。

logging.critical("critical message") #告警级别要比error还要高,严重错误,表明程序本身可能无法继续运行。

 

 

四、日志同时输出至文件以及屏幕案例

 import logging
 
 '''
 Python使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:
     1>.logger提供了应用程序可以直接使用的接口;
     2>.handler将(logger创建的)日志记录发送到合适的目的输出;
     3>.filter提供了细度设备来决定输出哪条日志记录;
     4>.formatter决定日志记录的最终输出格式。
 '''
 
 def get_logger():
     logger_obj = logging.getLogger()                        #创建一个logger对象,它提供了应用程序可以直接使用的接口,其类型为“<class 'logging.RootLogger'>”;
 
     fh = logging.FileHandler("yinzhengjie.txt")          #创建一个文件输出流;
     fh.setLevel(logging.ERROR)                              #定义文件输出流的告警级别;
 
     ch = logging.StreamHandler()                           #创建一个屏幕输出流;
     ch.setLevel(logging.CRITICAL)                           #定义屏幕输出流的告警级别;
 
     formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')        #自定义日志的输出格式,这个格式可以被文件输出流和屏幕输出流调用;
     fh.setFormatter(formater)                                #添加格式花输出,即调用我们上面所定义的格式,换句话说就是给这个handler选择一个格式;
     ch.setFormatter(formater)
 
     logger_obj.addHandler(fh)                               #logger对象可以创建多个文件输出流(fh)和屏幕输出流(ch)哟
     logger_obj.addHandler(ch)
 
     return logger_obj                                      #将我们创建好的logger对象返回
posted @ 2019-08-01 15:23  新物种-爬虫  阅读(265)  评论(0编辑  收藏  举报