logging包学习总结

""" 一、日志级别 Python 标准库 logging 用做记录日志,默认分为六种日志级别(括号为级别对应的数值), NOTSET(0)、DEBUG(10)、INFO(20)、WARNING(30)、ERROR(40)、CRITICAL(50)。 咱们自定义日志级别时注意不要和默认的日志级别数值相同,logging 执行时输出大于等于设置的日志级别的日志信息, 如设置日志级别是 INFO,则 INFO、WARNING、ERROR、CRITICAL 级别的日志都会输出。 """

""" 二、logging流程 能够分为这几个部分:Logger、LogRecord、Filter、Handler、Formatter。 Logger:即 Logger Main Class,是咱们进行日志记录时建立的对象,咱们能够调用它的方法传入日志模板和信息,来生成一条条日志记录,称做 Log Record。 Log Record:日志记录器。就代指生成的一条条日志记录。将日志传到相应的处理器处理 Handler:处理器。即用来处理日志记录的类,它能够将 Log Record 输出到咱们指定的日志位置和存储形式等, 如咱们能够指定将日志经过 FTP 协议记录到远程的服务器上,Handler 就会帮咱们完成这些事情。 Formatter:格式化器。实际上生成的 Log Record 也是一个个对象,那么咱们想要把它们保存成一条条咱们想要的日志文本的话,就须要有一个格式化的过程, 那么这个过程就由 Formatter 来完成,返回的就是日志字符串,而后传回给 Handler 来处理。 Filter:过滤器。另外保存日志的时候咱们可能不须要所有保存,咱们可能只须要保存咱们想要的部分就能够了,因此保存前还须要进行一下过滤,留下咱们想要的日志, 如只保存某个级别的日志,或只保存包含某个关键字的日志等,那么这个过滤过程就交给 Filter 来完成。 Parent Handler:Handler 之间能够存在分层关系,以使得不一样 Handler 之间共享相同功能的代码。 """

""" 三、日志输出格式 WARRING : ROOT : warn message 日志级别 logger示例名称 日志消息内容 """

""" 四、基本使用 logging 使用很是简单,使用 basicConfig() 方法就能知足基本的使用须要,若是方法没有传入参数,会根据默认的配置建立Logger 对象, 默认的日志级别被设置为 WARNING,默认的日志输出格式如上图,该函数可选的参数以下表所示。 filename 日志输出到文件的文件名 filemode 文件模式,w[+]、a[+]。清除后写入,追加写入 format 日志输出的格式 datefat 日志附带日期时间的格式 '%m/%d/%Y %I:%M:%S %p' style 格式占位符,默认为 "%" 和 “{}” level 设置日志输出级别 stream 定义输出流,用来初始化 StreamHandler 对象,不能 filename 参数一块儿使用,不然会ValueError 异常 handles 定义处理器,用来建立 Handler 对象,不能和 filename 、stream 参数一块儿使用,不然也会抛出 ValueError 异常 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。 %(processName)s:打印线程名称。 %(module)s:打印模块名称。 %(message)s:打印日志信息。 """

""" 五、发生异常 可是当发生异常时,直接使用无参数的 debug()、info()、warning()、error()、critical() 方法并不能记录异常信息, 须要设置 exc_info 参数为 True 才能够,或者使用 exception() 方法,还可使用 log() 方法,但还要设置日志级别和 exc_info 参数。 try: c = a / b except Exception as e: # 下面三种方式三选一,推荐使用第一种 logging.exception("Exception occurred") logging.error("Exception occurred", exc_info=True) logging.log(level=logging.DEBUG, msg="Exception occurred", exc_info=True) """

""" 六、自定义Logger 一个系统只有一个Logger对象,而且该对象不能被直接实例化,使用单例模式:获取Logger对象方法getLogger 这里的单例模式并非说只有一个 Logger 对象,而是指整个系统只有一个根 Logger 对象,Logger 对象在执行 info()、error() 等方法时 实际上调用都是根 Logger 对象对应的 info()、error() 等方法。 咱们能够创造多个 Logger 对象,可是真正输出日志的是根 Logger 对象 logger = logging.getLogger(__name__) Logger 对象能够设置多个 Handler 对象和 Filter 对象,Handler 对象又能够设置 Formatter 对象。 经常使用配置方法: Logger.setLevel() 指定记录器将处理的最低严重性日志消息,其中 debug 是最低内置严重性级别, critical 是最高内置严重性级别。 例如,若是严重性级别为 INFO ,则记录器将仅处理 INFO 、 WARNING 、 ERROR 和 CRITICAL 消息,并将忽略 DEBUG 消息。 Logger.addHandler() 和 Logger.removeHandler() 从记录器对象中添加和删除处理程序对象。 Logger.addFilter() 和 Logger.removeFilter() 能够添加或移除记录器对象中的过滤器。 """

复制代码
相关文章
相关标签/搜索