logging

logging

1、调用logger = logging.getLogger(日志名字)来生成一个日志收集器对象
2、设置你的日志收集级别。logger.setLevel(日志级别),一般为INFO
3、使用logging.Formatter类来定制要输出到控制台/文件当中的日志格式
4、使用handle1 = logging.StreamHandle()来创建一个控制台渠道对象,
并将控制台要输出的日志格式设置为3当中的formatter. 
设置:handle1.setformatter(Formatter对象)
5、将4当中的handle1添加到logger当中,那么日志就可以输出到控制台。
6、使用handle2 = logging.FileHandle(日志文件路径)来创建一个控制台渠道对象,
并将控制台要输出的日志格式设置为3当中的formatter. 
设置:handle2.setformatter(Formatter对象)
7、将6当中的handle2添加到logger当中,那么日志就可以输出到文件当中。


6、使用handle3 = logging.FileHandle(日志文件路径)来创建一个控制台渠道对象,
并将控制台要输出的日志格式设置为3当中的formatter. 
设置:handle3.setformatter(Formatter对象)

指定handle3的日志级别为ERROR
handle3.setLevel(logging.ERROR)

7、将6当中的handle3添加到logger当中,那么日志就可以输出到文件当中。

代码如下:
例子:1

import logging

# 第一步:
# 创建一个日志收集器
logger = logging.getLogger("nmb-py37")

# 第二步:
# 设自定义要收集的日志级别、自定义日志格式、自定义输出渠道

# 设自定义要收集的日志级别
logger.setLevel(logging.INFO)

# 自定义日志格式(Formatter)
fmt_str = "%(asctime)s %(name)s %(levelname)s %(filename)s [%(lineno)d] %(message)s"

# 实例化一个日志格式类
formatter = logging.Formatter(fmt_str)

# 实例化渠道(Handle).
# 控制台(StreamHandle)
handle1 = logging.StreamHandler()
# 设置渠道当中的日志显示格式
handle1.setFormatter(formatter)

# 将渠道与日志收集器绑定起来
logger.addHandler(handle1)

# 文件渠道(FileHandle)
handle2 = logging.FileHandler("py37.log",encoding="utf-8")
# 设置渠道当中的日志显示格式
handle2.setFormatter(formatter)
# 将渠道与日志收集器绑定起来
logger.addHandler(handle2)


# 文件渠道(FileHandle)
handle3 = logging.FileHandler("py37-error.log",encoding="utf-8")
# 设置渠道当中的日志显示格式
handle3.setFormatter(formatter)
# 设置handle3的日志输出级别为ERROR
handle3.setLevel(logging.ERROR)

# 将渠道与日志收集器绑定起来
logger.addHandler(handle3)

logger.info("hello,logging!!")
logger.warning("hello,warning!!")
logger.error("你错了!!")

例子2:

import logging

# 第一步:
# 创建一个日志收集器
get_log = logging.getLogger("pretty")

# 第二步:
# 设自定义要收集的日志级别、自定义日志格式、自定义输出渠道
get_log.setLevel(logging.INFO)

# 自定义日志格式(Formatter)
fmt_01 = "%(asctime)s %(name)s %(levelname)s %(filename)s [%(lineno)d] %(message)s"

# 实例化一个日志格式类
get_format = logging.Formatter(fmt_01)

"""
实例化渠道(Handle)。 
控制台(StreamHandle)
"""
handle_01 = logging.StreamHandler()
# 设置渠道当中的日志显示格式
handle_01.setFormatter(get_format)

# 将渠道与日志收集器绑定起来
get_log.addHandler(handle_01)

# 输出到控制台 文件渠道(FileHandler)
handle_02 = logging.FileHandler("py37.log", encoding="utf-8")
handle_02.setFormatter(get_format)

# 将渠道与日志收集器绑定起来
get_log.addHandler(handle_02)

get_log.info("1111111111")
get_log.warning("22222222222222")


# 输出结果:
2021-02-05 15:38:26,499 pretty INFO longing.py [43] 1111111111
2021-02-05 15:38:26,499 pretty WARNING longing.py [44] 22222222222222
函数封装logging:
import logging


# 是所有的配置
# config = logging("config.yaml")
# log_config = config['log']

def get_logger(
        name = None,
        file = None,
        logger_level = "DEBUG",
        stream_level = "DEBUG",
        file_level = "INFO",
        fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s [%(lineno)d] %(message)s"

):
    """获取到收集器"""
    logger = logging.getLogger(name)
    # 设置收集器的级别
    logger.setLevel(logger_level)

    # 输出管理器
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(stream_level)
    logger.addHandler(stream_handler)

    # 格式
    fmt = logging.Formatter(fmt)
    stream_handler.setFormatter(fmt)

    if file:
        file_handler = logging.FileHandler(file, encoding='utf8')
        file_handler.setLevel(file_level)
        logger.addHandler(file_handler)
        file_handler.setFormatter(fmt)
    return logger

类封装logging:
import logging

class LoggerHandler(logging.Logger):
    def __init__(self,
                 name = None,
                 file = None,
                 logger_level = "DEBUG",
                 stream_level = "DEBUG",
                 file_level = "INFO",
                 fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s [%(lineno)d] %(message)s"
                 ):
        super().__init__(name, logger_level)


        # 设置收集器的级别
        self.setLevel(logger_level)

        # 输出管理器
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(stream_level)
        self.addHandler(stream_handler)

        # 格式
        fmt = logging.Formatter(fmt)
        stream_handler.setFormatter(fmt)

        if file:
            file_handler = logging.FileHandler(file, encoding='utf8')
            file_handler.setLevel(file_level)
            self.addHandler(file_handler)
            file_handler.setFormatter(fmt)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值