日志处理logging
一、日志输出
- 日志默认的输出等级为:waring级别及以上的等级
- 修改日志的默认输出等级通过logging.basicConfig(level='INFO')
- 记录日志打印时间:logging.basicConfig(format=console_fmt)
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
- %(name)s 名字
- %(levelname)s 日志级别
- %(asctime)s 打印时间,年月日十分秒
- %(message)s 日志中的信息
- %(lineno)d 报错日志在代码中第几行
- logging.basicConfig(format=console_fmt,level='INFO')
- # -*- coding: utf-8 -*-
- import logging
- logger = logging.getLogger(__name__)
- console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
- logging.basicConfig(level="INFO",format=console_fmt)
- logging.debug("debug")
- logging.info("info")
- logging.warning("warning")
- logging.error("error")
- logging.critical("critical")
复制代码 二、日志输出到控制台
- # Time:2022 2022/3/1 17:20
- # Author: Jasmay
- # -*- coding: utf-8 -*-
- import logging
- # 第一步:创建日志器对象,默认等级为warning
- logger = logging.getLogger("这是我的一个小测试日志")
- logging.basicConfig(level="INFO")
- # 第二步:创建控制台日志处理器
- console_handler = logging.StreamHandler()
- # 第三步:设置控制台日志的输出级别,需要日志器也设置日志级别为info;----根据两个地方的等级进行对比,取日志器的级别
- console_handler.setLevel(level="WARNING")
- # 第四步:设置控制台日志的输出格式
- console_fmt = "%(name)s--->%(asctime)s--->%(message)s--->%(lineno)d"
- fmt1 = logging.Formatter(fmt=console_fmt)
- console_handler.setFormatter(fmt=fmt1)
- # 第五步:将控制台日志器,添加进日志器对象中
- logger.addHandler(console_handler)
- logger.debug("---debug")
- logger.info("---info")
- logger.warning("---warning")
- logger.error("---error")
- logger.critical("---critical")
复制代码 三、输出到日志文件
- # Time:2022 2022/3/1 17:44
- # Author: Jasmay
- # -*- coding: utf-8 -*-
- # Time:2022 2022/3/1 17:20
- # Author: Jasmay
- # -*- coding: utf-8 -*-
- import logging
- # 第一步:创建日志器对象,默认等级为warning
- logger = logging.getLogger("这是我的一个小测试日志")
- logging.basicConfig(level="INFO")
- # 第二步:创建文件日志处理器
- file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
- # 第三步:设置控制台日志的输出级别,需要日志器也设置日志级别为info;----根据两个地方的等级进行对比,取日志器的级别
- # 第四步:设置控制台日志的输出格式
- file_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s"
- fmt2 = logging.Formatter(fmt = file_fmt)
- file_handler.setFormatter(fmt = fmt2)
- # 第五步:将文件日志器,添加进日志器对象中
- logger.addHandler(file_handler)
- logger.debug("---debug")
- logger.info("---info")
- logger.warning("---warning")
- logger.error("---error")
- logger.critical("---critical")
复制代码 四、同时输出到控制台+文件
- # Time:2022 2022/3/1 17:20
- # Author: Jasmay
- # -*- coding: utf-8 -*-
- import logging
- # 第一步:创建日志器对象,默认等级为warning
- logger = logging.getLogger("这是我的一个小测试日志")
- logging.basicConfig(level="INFO")
- # 第二步:创建控制台日志处理器+文件日志处理器
- console_handler = logging.StreamHandler()
- file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
- # 第三步:设置控制台日志的输出级别,需要日志器也设置日志级别为info;----根据两个地方的等级进行对比,取日志器的级别
- console_handler.setLevel(level="WARNING")
- # 第四步:设置控制台日志和文件日志的输出格式
- console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s--->%(lineno)d"
- file_fmt = "%(lineno)d--->%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s"
- fmt1 = logging.Formatter(fmt = console_fmt)
- fmt2 = logging.Formatter(fmt = file_fmt)
- console_handler.setFormatter(fmt = fmt1)
- file_handler.setFormatter(fmt = fmt2)
- # 第五步:将控制台日志器、文件日志器,添加进日志器对象中
- logger.addHandler(console_handler)
- logger.addHandler(file_handler)
- logger.debug("---debug")
- logger.info("---info")
- logger.warning("---warning")
- logger.error("---error")
- logger.critical("---critical")
复制代码 五、日志类:将日志输出到控制台+文件
- # Time:2022 2022/3/2 10:21
- # Author: Jasmay
- # -*- coding: utf-8 -*-
- import logging
- class Logger():
- def __init__(self,level="DEBUG"):
- # 创建日志器对象
- self.logger = logging.getLogger(__name__)
- self.logger.setLevel(level)
- def console_handler(self,level="DEBUG"):
- # 创建控制台的日志处理器
- console_handler = logging.StreamHandler()
- console_handler.setLevel(level)
- # 处理器添加输出格式
- console_handler.setFormatter(self.get_formatter()[0])
- # 返回控制器
- return console_handler
- def file_handler(self, level="DEBUG"):
- # 创建文件的日志处理器
- file_handler = logging.FileHandler("./log.txt",mode="a",encoding="utf-8")
- file_handler.setLevel(level)
- # 处理器添加输出格式
- file_handler.setFormatter(self.get_formatter()[1])
- # 返回控制器
- return file_handler
- def get_formatter(self):
- """格式器"""
- console_fmt = logging.Formatter(fmt="%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s")
- file_fmt = logging.Formatter(fmt="%(lineno)d--->%(name)s--->%(levelname)s--->%(asctime)s--->%(message)s")
- # 返回的是一个元组
- return console_fmt,file_fmt
- def get_log(self):
- # 日志器中添加控制台处理器
- self.logger.addHandler(self.console_handler())
- # 日志器中添加文件处理器
- self.logger.addHandler(self.file_handler())
- # 返回日志实例对象
- return self.logger
复制代码 六、调用日志类:将日志输出到控制台+文件
- # Time:2022 2022/3/2 10:45
- # Author: Jasmay
- # -*- coding: utf-8 -*-
- from common.logone import Logger
- class TestLog():
- def __init__(self):
- log = Logger()
- self.logger = log.get_log()
- def test_baili_01(self):
- self.logger.info("开始执行")
- self.logger.warning("结束执行")
- # 实例化
- test = TestLog()
- # 调用类中的方法
- test.test_baili_01()
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |