python—日志收集

本贴最后更新于 751 天前,其中的信息可能已经渤澥桑田

前置条件:

一、首先我们要知道日志分别哪几个级别:5个级别

debug(调试)<info(程序正常运行输出的日志)<warning(警告)<error(错误)<critical(致命错误程序崩溃)

备注:优先级从小到大,也就是说前面一个级别的日志包括后面级别的日志,比如输出debug级别日志包括info,warning,error,critical级别的日志

二、其次我们要考虑日志的格式:

%(name)s : 日志收集渠道的名称
%(levelno)s :日志级别对应的数值
%(levelname)s : 日志级别名称 ("DEBUG", "INFO","WARNING", "ERROR", "CRITICAL")
%(pathname)s :输出日志的文件的绝对路径(有.py后缀)
%(filename)s :输出日志的py文件的名称(有.py后缀)
%(module)s: 输出日志的py文件的名称(没有有.py后缀)
%(lineno)d:输出日志的行数
%(funcName)s:输出日志的函数名称,如果不是函数输出,那就输出py文件名称(%(module)s)
%(created)f :日志输出的时间,格式为时间戳,time.time()
%(asctime)s:日志输出的时间,格式(年-月-日 时:分:秒,毫秒)
%(msecs)d :日志输出时间的毫秒
%(relativeCreated)d : 日志输出的相对时间
%(thread)d :输出日志的线程id
%(threadName)s :输出日志的线程名称
%(process)d:输出日志的进程id
%(message)s :日志内容

备注:按需要去设置

正式开始正式日志收集流程:

先导入日志模块,然后导入渠道方法

  1. 创建日志收集器
  2. 创建日志收集渠道
  3. 创建日志格式
  4. 渠道绑定日志格式
  5. 日志收集器设置日志级别
  6. 给日志收集器绑定渠道
import logging
from logging import handlers

#设置日志收集器
py48 = logging.getLogger("py48")

#设置日志收集渠道
file = handlers.TimedRotatingFileHandler(filename = "py48.log", when='D', interval=1,encoding="utf-8")

#创建日志格式
fmt = "%(asctime)s-%(name)s-%(levelno)s-%(filename)s-%(funcName)s-%(message)s"
file_fmt = logging.Formatter(fmt=fmt)

#渠道绑定日志格式
file.setFormatter(fmt=file_fmt)

#日志收集器设置日志级别
py48.setLevel(level=logging.DEBUG)
file.setLevel(level=logging.INFO)

#给日志收集器绑定渠道
py48.addHandler(file)

py48.debug(msg= "这里是日志信息1")
py48.debug(msg= "这里是日志信息2")
py48.info(msg= "这里是日志信息3")
py48.error(msg= "这里是日志信息4")
py48.critical(msg= "这里是日志信息5")

封装日志收集

import logging
from logging import handlers

def my_log():
    py48 = logging.getLogger(name="py48")  #创建日志收集器
    file = handlers.TimedRotatingFileHandler(filename="text.log", when='D', interval=1, encoding="utf-8")  #创建日志渠道
    fmt = "%(asctime)s-%(name)s-%(levelno)s-%(filename)s-%(funcName)s-%(message)s"
    log_fmt = logging.Formatter(fmt=fmt)  #创建日志格式
    file.setFormatter(fmt=log_fmt)   #给渠道绑定日志格式
    py48.setLevel(level=logging.DEBUG)   #给日志收集器设置日志级别
    file.setLevel(level=logging.INFO)    #给渠道设置日志级别
    py48.addHandler(file)   #给日志收集器绑定渠道
    return py48

logs = my_log()   #实列话方法

logs.info(msg="test01")    #调用
# logs.info(msg="test02")
# logs.info(msg="test03")

备注:封装后,可以直接调用,也方便在其他模块直接导入调用

from demo03 import logs
logs.info(msg="test123")
logs.info(msg="test23")
logs.info(msg="test3")
logs.info(msg="test4")
回帖
请输入回帖内容 ...