Python_Logging日志模块(一)

一,日志的作用

        展现当前程序的活动情况,记录程序的运行轨迹,规范稳定的日志可以帮助开发者迅速定位程序的问题.

二,日志的内容

        正常情况下,一条完整的日志应该包含调用日志的时间戳,数字形式的日志级别,调用日志的实例化函数的路径,线程名,抛出的活动信息。

三,日志等级

日志级别名称日志级别数值
DEBUG10
INFO20
WARNING30
ERROR40
CRITICAL50

四,Formatter中常用的格式化信息

参数作用
%(levelno)s日志级别的数值
%(levelname)s日志级别的名称
%(pathname)s当前执行程序的路径
%(filename)s当前执行程序名
%(funcName)s当前执行函数
%(lineno)d当前执行行号
%(asctime)s日志打印时间
%(thread)d线程ID
%(threadName)s线程名称
%(process)d打印进程ID
%(message)s打印日志信息

五,基本使用

#导入loogging日志模块
import logging

#创建日志对象,默认用户为Admin
logger = logging.getLogger('Admin')

#定义处理器
ConsoleHandler = logging.StreamHandler()
FileHandler = logging.FileHandler("log/all.log")

#设置处理器输出格式
ConsoleHandler = "[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]"
FileHandler = "[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]"

#日志格式
Format_ConsoleHandler = logging.Formatter(fmt=ConsoleHandler)
Format_FileHandler = logging.Formatter(fmt=FileHandler)

#添加处理格式
ConsoleHandler .setFormatter(Format_ConsoleHandler)
FileHandler.setFormatter(Format_FileHandler)

#日志等级
ConsoleHandler.setLevel(level="WARNING")
FileHandler.setLevel(level="INFO")
logger.addHandler(ConsoleHandler)
logger.addHandler(FileHandler)

logger.debug("这是DEBUG")
logger.info("这是INFO")
logger.warning("这是warning")
logger.error("这是warning")
logger.critical("这是critical")

六,基本封装

        控制日志输出格式:

                logging.Formatter(fmt = '%(asctime)s')  日志输出日志打印时间

        控制日志输出等级:

                控制台只输出等级在WARNING以及之上的日志console_handler.setLeave('WARNING')                  日志文件只输出等级在INFO以及之上的日志file_handler.setLeave('INFO') 

        控制输出日志路径以及文件名:

                log = Logging()

                logger = log.get_log('./test.log')

import logging

class Logging():

    def __init__(self,username=None,level="DEBUG"):
        #创建日志对象
        self.log = logging.getLogger(username)
        self.log.setLevel(level)

    def ConsoleHandle(self,level="WARNING"):
        #创建控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(level)
        console_handler.setFormatter(self.get_formatter()[0])
        return console_handler

    def FileHandle(self,path,level="INFO"):
        #创建文件处理器
        file_handler = logging.FileHandler(path,encoding='gbk')
        file_handler.setLevel(level)
        file_handler.setFormatter(self.get_formatter()[1])
        return file_handler

    def get_formatter(self):
        #日志文本格式
        ConsoleHandle = logging.Formatter(fmt="[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]")
        FileHandle = logging.Formatter(fmt="[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]")
        return ConsoleHandle,FileHandle

    def get_log(self,path):
        self.log.addHandler(self.ConsoleHandle())
        self.log.addHandler(self.FileHandle(path))
        return self.log

if __name__ == '__main__':
    log = Logging()
    #可以配置all.log存放的路径
    logger = log.get_log('./all.log')
    logger.debug("debug开始执行")
    logger.info("info开始执行")
    logger.warning("warning结束执行")
    logger.error("error结束执行")
    logger.critical("critical结束执行")

运行结果如下:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅冒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值