python-logging日志

  1. 简单例子
  2. 项目logging
    1. 配置日志记录

官方文档: https://docs.python.org/zh-cn/3/howto/logging.html

简单例子

import logging

# logging 配置basicConfig:Do basic configuration for the logging system
# 对 basicConfig() 的调用应该在 debug() , info() 等的前面。因为它被设计为一次性的配置,只有第一次调用会进行操作,随后的调用不会产生有效操作。
logging.basicConfig(filename='example.log', level=logging.DEBUG,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')


logging.debug('debug msg:%s',"Milton")
logging.info('info msg')
logging.warning('warning msg')
logging.error('error msg')

项目logging

日志库采用模块化方法,并提供几类组件:

  • 记录器:logger:暴露了应用程序代码直接使用的接口
  • 处理器:handler:将日志记录(由记录器创建)发送到适当的目标。
  • 过滤器:filter:用于确定要输出的日志记录。
  • 格式器:formatter:指定最终输出中日志记录的样式。

配置日志记录

  • 显式创建记录器、处理器和格式器
import logging

# 创建记录器:logging.getLogger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)


# 创建流处理器 controll handler:logging.StreamHandler,日志输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# 创建文件处理器 file handler:logging.FileHandler,日志写入到文件
fh = logging.FileHandler(filename="mylog.log",encoding="utf-8")
fh.setLevel(logging.DEBUG)

# 创建格式器:logging.Formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')


# 处理器中绑定格式器
ch.setFormatter(formatter)
fh.setFormatter(formatter)


# 记录器中绑定处理器,一个记录器中可以绑定多个处理器
logger.addHandler(ch)
logger.addHandler(fh)


# 在应用中使用记录器发送日志
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
  • 创建日志配置字典,并使用 dictConfig() 函数读取它
import logging
import logging.config

#
LOGGING_CONFIG = {
    "version": 1,
    "formatters": {
        "simple": {
            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "simple",
            "stream": "ext://sys.stdout"
        },
        "file": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "DEBUG",
            "formatter": "simple",
            "filename": "logconfig.log",
            "maxBytes": 1024,
            "backupCount": 3

        }
    },
    "loggers": {
        "simpleExample": {
            "level": "DEBUG",
            "handlers": ["file"]
        }
    },
    "disable_existing_loggers": True,
    "root": {
        "handlers": ["console"],
        "level": "DEBUG"
    },
}

logging.config.dictConfig(LOGGING_CONFIG)

# 创建记录器:logging.getLogger
logger = logging.getLogger('simpleExample')

# 在应用中使用记录器发送日志
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code