其他分享
首页 > 其他分享> > 日志处理logging

日志处理logging

作者:互联网

前言

  什么是日志?有什么作用?日志是跟踪软件运行时所发生的事件的一种方法,简单来说它可以记录某时某刻运行了什么代码,当出现问题时可以方便我们进行定位。

由python内置了一个logging模块,用户可以通过调用debug()、 info()、 warning()、 error() 、 critical()和notset()等方法进行日志的收集和处理。

一、日志等级

级别 数字值 作用
NOSET 0  废话,等于没写,毫无用处的文字
DEBUG 10 调试,一些额外信息。备注,往往与主体功能无关
INFO 20 主体功能的信息,做了些啥
WARNING 30 警告,提醒下次有可能会触发错误
ERROR 40  错误
CRITICAL 50  极其严重的错误,会影响系统的崩溃

 二、日志使用

 

import logging

#1、初始化日志收集器
logger = logging.getLogger("这是日志收集器名称")

#2、设置日志收集器的等级,高于或等于这个级别的日志我才记录
logger.setlevel("DEBUG")

#3、初始化日志处理器handler:终端流处理器streamhandler和文件流处理器filehandler
stream_handler = logging.StreamHandler()

#4、设置终端流处理器的等级。高于或等于这个级别的日志我才显示
stream_handler.setlevel("INFO")

#5、日志收集器logger添加handler
logger.addHandler(stream_handler)

#6、初始化日志格式format:
format_str = "%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s"

#7、handler添加format
stream_handler.setFormatter(format_str)

#8、调用
logger.info("信息")
logger.debug(“调试信息”)

终端流处理器:日志直接在终端中显示(我用的是pycharm,那么就是pycharm控制台显示)

文件流处理器:将日志存储在文件中

一个收集器可以对应多个处理器,也就是说,可以同时设置终端流处理器和文件处理器

file_handler = logging.FileHandler("log.txt",encoding="utf8")

file_handler.setLevel("INFO")

#添加handler
logger.addHandler(file_handler)

#handler添加format
file_handler.setFormatter(fmt)

#调用

setlevel():相当于过滤器,不设置参数时默认的是WARNING,要大写。只有高于或等于设置的级别才显示。

logger和handler的级别需要比较,哪个级别更高,就以哪个为准

日志格式:https://docs.python.org/zh-cn/3/library/logging.html可以上官方网站查看需要的格式

三、日志封装

import logging

#日志的二次封装
def logging_function(logger_name,
                     logger_level="DEBUG",
                     handler_level="INFO",
                     log_file_name="logging.txt",
                     encoding="utf8",
                     format_str="%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s"
                     ):

    logger = logging.getLogger(logger_name)
    logger.setLevel(logger_level)
    # 终端流处理器
    stream_hangdler = logging.StreamHandler()
    stream_hangdler.setLevel(handler_level)
    logger.addHandler(stream_hangdler)
    # 文件处理器
    file_hangdler = logging.FileHandler(log_file_name, encoding=encoding)
    file_hangdler.setLevel(handler_level)
    logger.addHandler(file_hangdler)
    fmt = logging.Formatter(format_str)
    stream_hangdler.setFormatter(fmt)
    file_hangdler.setFormatter(fmt)
    return logger

#调用
logging_name="日志收集"
logger=logging_function(logging_name)

 

标签:logging,处理,handler,file,--%,日志,logger
来源: https://www.cnblogs.com/xiaofenggou/p/16674025.html