logging日志

1、logging

记录程序日志信息可以很方便的了解程序的运行情况,可以分析用户的操作行为等信息方便开发人员检查bug
logging日志等级:
DEBUG:程序调试bug时使用
INFO:程序正常运行时使用
WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
ERROR:程序出错误时使用,如:IO操作失败
CRITICAL:特别严重的问题,导致程序不能再继续运行时使用

默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。
日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

2、logging 包中记录日志的方式有两种

输出到控制台

import logging
#创建日志处理对象
logger = logging.getLogger()
#设置日志级别
logger.setLevel("DEBUG")
#创建控制台处理器
console_handler = logging.StreamHandler()
#设置控制台等级
console_handler.setLevel("DEBUG")  #控制台级别比日志级别高
#日志器添加控制台处理器
logger.addHandler(console_handler)

if __name__ == "__main__"
	logging.warning("this is a warning")
	logging.info("this is a info")
	logging.debug("this is a debug")
	logging.error("this is a error")

保存到日志文件

import logging
#创建日志处理对象
logger = logging.getLogger()
#设置日志级别
logger.setLevel(level="DEBUG")
#创建文件日志处理器
file_handler = logging.FileHandler("./log.log",mode='a',encoding="utf8")
#设置文件日志等级
file_handler.setLevel("ERROR")
#添加到日志器
logger.addHandler(file_handler)

if __name__ == '__main__':
    logging.warning("this is a warning")
    logging.info("this is a info")
    logging.debug("this is a debug")
    logging.error("this is a error")

输出到控制台和保存到日志文件

import logging

logger = logging.getLogger("Time")
logger.setLevel("DEBUG")

console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("./log1.log",mode="a",encoding="utf8")

fmt1 = logging.Formatter(fmt="%(name)s ===> %(message)s ===> %(asctime)s ")
fmt2 = logging.Formatter(fmt="%(name)s ===> %(asctime)s ===> %(message)s ")

console_handler.setFormatter(fmt1)
file_handler.setFormatter(fmt2)

logger.addHandler(console_handler)
logger.addHandler(file_handler)
if __name__ == '__main__': 
    logger.warning("this is a warning")
    logger.info("this is a info")
    logger.debug("this is a debug")
    logger.error("this is a error")

level: 表示设置的日志等级
format: 表示日志的输出格式, 参数说明:
%(levelname)s: 打印日志级别名称
%(filename)s: 打印当前执行程序名
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(message)s: 打印日志信息

3、log封装

import logging

class Logger():
    def __init__(self,name,level="DEBUG"):
        self.log = logging.getLogger(name)
        self.log.setLevel(level=level)
	#设置控制台格式
    def set_console_format(self):
        fmt = logging.Formatter("%(name)s ===> %(message)s ===> %(asctime)s ")
        return fmt
	#设置控制台控制器
    def set_console_handler(self,level="DEBUG"):
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(self.set_console_format())
        console_handler.setLevel(level=level)
        return console_handler
	#设置文件输出格式
    def set_file_format(self):
        fmt = logging.Formatter("%(name)s ===> %(asctime)s ===> %(message)s ")
        return fmt
	#设置文件控制器
    def set_file_handler(self,path="./log2.log",level="DEBUG"):
        file_handler = logging.FileHandler(path,mode="a",encoding="utf8")
        file_handler.setFormatter(self.set_file_format())
        file_handler.setLevel(level=level)
        return file_handler
	#获取日志对象
    def get_log(self):
        self.log.addHandler(self.set_console_handler())
        self.log.addHandler(self.set_file_handler())
        return self.log

if __name__ == '__main__':
    log = Logger("Time")
    logger = log.get_log()
    logger.warning("this is a warning")
    logger.info("this is a info")
    logger.debug("this is a debug")
    logger.error("this is a error")
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值