乳杂丫 发表于 2025-6-5 19:48:17

Logging日志

日志处理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())

      # 返回控制器
      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())

      # 返回控制器
      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()
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Logging日志