logging日志的封装

1、looging 的四大组建

日志器 Logger      入口
处理器 Handler     执行者 ,决定日志在不同端的输出,日志文件。控制台
格式化 Formatter   日志输入的内容
过滤器 Filter      输入感兴趣的日志

2、日志收集器的封装,与步骤

控制台日志与文件日志的创建过程

第一步:创建日志器

logger=logging.getLogger("logger")

第二步:设置日志的输出级别

logger.setLevel(logging.INFO)

第三步:设置日志格式化的输出

%(asctime)s  字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(levelname)s  文本形式的日志级别
%(message)s  用户输出的消息
'''
formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s","%Y/%m/%d-%H:%M:%S")

第三步:将控制器加入日志对象

# 创建控制台处理器  -- 输出控制台
SH=logging.StreamHandler()
#控制台
logger.addHandler(SH)
SH.setFormatter(formatter)
# 创建文件处理器  输出文件
#文件输出的比控制台多一步,创建文件
FH=logging.FileHandler(f'{time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())}_log.txt')
logger.addHandler(FH)
FH.setFormatter(formatter)

整体代码


import logging
import time


# 创建日志器
logger=logging.getLogger("logger")



# 日志输出及当前级别 ,作用全局
logger.setLevel(logging.INFO)

# 作用控制台,日志级别
# SH.setLevel()


#格式化
# 日志包含哪些内容  时间,文件,日志级别, 做了什么事情

# %(asctime)s  字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
# %(levelname)s  文本形式的日志级别
# %(message)s  用户输出的消息

formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s","%Y/%m/%d-%H:%M:%S")

# 创建控制台处理器  -- 输出控制台
SH=logging.StreamHandler()
#控制台
logger.addHandler(SH)
SH.setFormatter(formatter)


# 创建文件处理器  输出文件
#文件输出的比控制台多一步,创建文件
FH=logging.FileHandler(f'{time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())}_log.txt')
logger.addHandler(FH)
FH.setFormatter(formatter)

try:
    score=int(input("请输入你的成绩:"))
    if score>60:
        print("你通过了")
    else:
        print("很遗憾,你没通过")
    logger.info("查询成功!!!")
except Exception as error:
    logger.error("信息错误:"+str(error))


使用
logger.info("查询结束!!!!!!!!!")

简化

        self.logger=logging.getLogger(filename)

        # 控制台日志
        self.console_handler=logging.StreamHandler()

        # self.logger.setLevel(level)

        #设置日志的格式
        self.console_handler.setFormatter(logging.Formatter("[%(asctime)s]%(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s"))

        #把日志添加到日志对象
        self.logger.addHandler(self.console_handler)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9z3cYgPO-1721979284167)(https://i-blog.csdnimg.cn/blog_migrate/d2eeecdd826be7636a63def7e719dc5e.png)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
loggingPython内置模块,用于记录日志信息。下面是一个简单的logging封装使用示例: ```python import logging class Logger: def __init__(self, name='my_logger', level='INFO', log_file=None): self.logger = logging.getLogger(name) self.logger.setLevel(logging.getLevelName(level)) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') if log_file: file_handler = logging.FileHandler(log_file) file_handler.setFormatter(formatter) self.logger.addHandler(file_handler) else: stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) self.logger.addHandler(stream_handler) def debug(self, msg): self.logger.debug(msg) def info(self, msg): self.logger.info(msg) def warning(self, msg): self.logger.warning(msg) def error(self, msg): self.logger.error(msg) def critical(self, msg): self.logger.critical(msg) ``` 上面的代码定义了一个Logger类,可以用来记录不同级别的日志信息。使用示例如下: ```python logger = Logger(name='my_logger', level='DEBUG', log_file='my.log') logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') ``` 在以上示例中,我们创建了一个名为my_logger的Logger实例,设置了日志级别为DEBUG,并将日志记录到文件my.log中。如果没有指定log_file,则日志将打印到控制台。我们还定义了5个方法,分别用于打印不同级别的日志信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Leoon123

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值