美文网首页
python日志模块及配置日志

python日志模块及配置日志

作者: 软件开发技术修炼 | 来源:发表于2022-05-06 23:55 被阅读0次

好久没有使用日志模块了,便于理解,重新拾起
跟我一起回顾下python的logging模块吧~

一、日志的使用特性

设置日志等级 ,高低顺序:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

1、logging 默认的输入等级是warning

import logging

# 默认的输入等级是warning
age = 5
logging.debug("debug mesg is %d"%age)
logging.info("info mesg is {}".format(age))
logging.warning(f"warning mesg is {age}")
# output:
WARNING:root:warning mesg

2、logging.basicConfig设置特定的等级、 时间格式

fmt = "%(name)s--->%(message)s--->%(asctime)s"
logging.basicConfig(level="DEBUG",format=fmt)    
# output:
 从debug开始输出,output:DEBUG:root:debug mesg 输出3个
 root--->debug mesg--->2022-05-06 19:49:38,395

二、配置日志

1、创建日志对象

创建一个logger,没有指定name,返回root logger;name相同,返回logger实例都是同一个且只有一个;
即logger实例与name是一一对应,无需logger实例进行传递,只要知道name即可

import logging
#创建日志
logger = logging.getLogger('mylogger')

2、创建控制台日志处理器
handlers处理器,将日志分发到不同的目的地,可以是文件,邮件,或者通过http等协议发送到任何地方

# 打印窗口日志
cons_handler = logging.StreamHandler()
cons_handler.setLevel(level="ERROR")
# 日志器添加控制台处理器
logger.addHandler(console_handler)
logger.info("开始记录日志")

3、创建文件日志处理器,将日志输入到日志文件中

logfile = os.path.join(LOG_PATH, "{}.log".format(time.strftime("%Y%m%d")))
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler(logfile,node='a',encoding="UTF-8")
# 同控制台
fh.setLevel(level="ERROR")
logger.addHandler(fh)

4、定义handler的输出格式
ft = logging.Formatter,init(fmt=None,datefmt=None,style=' %')

image.png
fh_fmt = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(fmt = fh_fmt)

5、输出日志

logger.info("开始记录日志")

三、配置日志封装

import logging

class Log():

    def __init__(self,level="DEBUG"):
        # 初始化,创建日志
        self.log = logging.getLogger("tlylog")
        self.log.setLevel(level)
        
    def file_handle(self,level="DEBUG"):
        # 创建文件处理器
        fh = logging.FileHandler(filename,node="a",encoding="UTF-8")
        # 设置等级,格式
        fh.setLevel(level)
        fh.setFormatter(self.get_formatter()[0])
        return fh
        
    def cons_handle(self,level="DEBUG"):
        # 创建cmd窗口处理器
        cons = logging.StreamHandler()
        cons.setLevel(level)
        cons.setFormatter(self.get_formatter()[0])
        return cons
        
    def get_formatter(self):
        # 分别设置文件或窗口的日志打印格式
        fh_fmt = fh.setFormatter(fmt = "%(levelname)s-->%(asctime)s-->%(message)s")
        cons_fmt = cons.setFormatter(fmt = "%(levelname)s-->%(asctime)s-->%(message)s")
        return fh_fmt,cons_fmt
        
    def get_log(self):
         # 分别将处理器添加到日志器中
        self.log.addHandler(self.file_handle())
        self.log.addHandler(self.cons_handle())
        # 返回日志实例对象
        return self.log
        
#log = Log()
#logger = log.get_log()
#logger.info("first mesg")
      
# 测试用例如何调用日志
from base.log import Log

class Test():
    
    def __init__(self):
        log = Log()
        self.logger = log.get_log()
    def test1(self):
        self.logger.info("开始执行")
        self.logger.infi("执行结束")

相关文章

网友评论

      本文标题:python日志模块及配置日志

      本文链接:https://www.haomeiwen.com/subject/nnkayrtx.html