欢迎来到皮皮网网首页

【python自身源码】【盲盒交友源码v1.07】【易语言防被打开源码】pythonlogging封装源码_python logging 封装

来源:脉聊二开源码 时间:2024-12-29 08:28:03

1.python日志库loging进阶教程
2.20231207_python基础-logger模块
3.14-1-logging模块及使用
4.Python + logging输出到屏幕,封封装将log日志写入到文件

pythonlogging封装源码_python logging 封装

python日志库loging进阶教程

       在深入探讨Python日志库logging后,装源本文将带你进入更高级的封封装功能学习,包括过滤器Filter的装源运用和logging的配置方法。

       1. 过滤器Filter的封封装威力

       过滤器Filter的作用在于提供精细的控制,超越了仅通过level控制日志记录的装源python自身源码粗略方式。它可以动态绑定到logger或handler,封封装对LogRecorder对象进行属性操作,装源甚至可以根据特定属性值决定是封封装否记录。过滤器的装源实现可以是类或函数,例如,封封装通过类实现的装源Filter,需要重写filter方法,封封装接收LogRecorder对象,装源通过其属性进行过滤决策。封封装盲盒交友源码v1.07简单的函数形式则更易操作,比如一个只接受LogRecorder对象并根据其message内容包含'abc'来决定记录或不记录的日志条目。

       2. 日志配置的艺术

       logging的配置有三种方式,代码实现、配置文件导入和字典配置。针对大项目,推荐使用配置文件来分离代码和配置,方便维护和升级。以yaml格式的配置文件为例,它包含version、disable_existing_logger、filters、formatters、handlers和root等部分,易语言防被打开源码每个部分都有详细的描述和使用规则。例如,filters部分定义了可用的过滤器,formatters定义了日志格式,handlers则定义了输出目的地及其设置,如level、formatter和过滤器等。

       通过yaml文件配置logging,开发者只需修改文件即可调整日志行为,提升了灵活性。要将yaml文件内容转换为Python字典,可以借助pyYAML库。

       文章总结:深入理解过滤器和灵活配置日志是logging进阶的关键,这将有助于你构建更精细、山东省溯源码如何打印可维护的日志系统。

_python基础-logger模块

       Python基础教程:Logger模块详解

       直接步入主题,Logger模块在Python编程中扮演着重要角色,它帮助我们管理和跟踪程序运行时的详细信息。以下是一些关键部分的简要介绍:

       1. 快速上手:对于初次接触Logger的开发者,可以快速通过简单的导入和基本配置开始使用。例如,设置一个基本的日志处理器和级别(如INFO、WARNING或ERROR):

       python

       import logging

       logging.basicConfig(level=logging.INFO)

       logger = logging.getLogger(__name__)

       logger.info("这是个信息日志")

       2. 日志字典配置文件:如果需要更精细的控制,可以使用配置文件,如`logging.config.dictConfig()`。通过定义一个字典,可以设置日志处理器、格式、摄像头通讯录源码文件路径等:

       python

       logging_config = {

        'version': 1,

        'formatters': {

        'standard': {

        'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

        }

        },

        'handlers': {

        'file_handler': {

        'class': 'logging.FileHandler',

        'filename': 'myapp.log',

        'formatter': 'standard'

        }

        },

        'root': {

        'level': 'DEBUG',

        'handlers': ['file_handler']

        }

       }

       logging.config.dictConfig(logging_config)

       3. Django中的logger配置:在Django项目中,可以利用内置的`django.utils.log`模块进行配置,以整合项目的日志处理:

       python

       LOGGING = {

        'version': 1,

        'disable_existing_loggers': False,

        'formatters': {

        'verbose': {

        'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'

        },

        },

        'handlers': {

        'console': {

        'level': 'DEBUG',

        'class': 'logging.StreamHandler',

        'formatter': 'verbose'

        },

        },

        'loggers': {

        'django': {

        'handlers': ['console'],

        'level': os.environ.get('DJANGO_LOG_LEVEL', 'INFO'),

        },

        },

       }

       4. 持续输出到容器文件:在生产环境中,可能需要将日志不断地写入持久化的文件,可以使用`RotatingFileHandler`来实现定期或按大小滚动日志文件:

       python

       handler = logging.handlers.RotatingFileHandler('myapp.log', maxBytes= * , backupCount=5)

       以上是Logger模块的一些基础用法,熟练掌握后,可以帮助你更好地追踪和调试代码中的问题。

-1-logging模块及使用

       本文主要介绍Python logging模块的使用方法和配置。

       logging模块提供了一个统一的日志记录接口,可以记录程序运行过程中的各种日志信息。默认情况下,日志级别为warning,日志信息仅在终端显示。

       可以通过全局配置指定logging模块的行为,控制日志信息打印到文件中。logging模块提供了Formatter、Handler、Logger和Filter等对象的使用方式。Logger对象负责日志信息的过滤,Handler对象将过滤后的日志信息输出到指定位置,Formatter负责将日志信息格式化。

       日志级别从低到高依次为debug、info、warning、error和critical。Logger与Handler的级别关系是,Logger级别的设置影响了后续Handler级别的处理。例如,若将logger等级设为debug,handler设为info,则handler对象的输出不会包含debug级别的日志。

       在实际应用中,通常会使用一个配置字典来定义日志,以实现日志的统一管理。配置字典通常包含日志输出格式、日志文件位置等信息。实例中包括导入logging模块、定义日志输出格式、定义日志文件位置、定义配置字典、在配置文件中加载配置、生成logger对象并输出日志等步骤。为了方便在其他文件中使用该配置,可以将导入配置字典的操作封装成函数,简化使用流程。

       总之,通过合理配置logging模块,可以实现高效、规范的日志记录与管理,对程序的调试和维护非常有帮助。

Python + logging输出到屏幕,将log日志写入到文件

       Python的logging模块提供了一套强大的日志处理工具,包括debug(), info(), warning(), error()和critical()等函数,根据事件的严重程度进行区分。

       这些函数的级别和用途如下,从轻到重依次为:debug用于详细信息,info用于一般信息,warning用于提示性信息,error表示错误,而critical则是最重要的紧急情况。

       在使用中,我们常常需要将日志输出到控制台和文件中。为此,可以创建一个Logger类,通过它来定制输出格式。例如,我们可以创建两个不同类型的日志文件:all.log保存所有级别的信息,如debug, info, warning和critical,而error.log仅保存error级别信息,同时通过TimedRotatingFileHandler按照时间自动分割日志文件。

       python

       import logging

       from logging import handlers

       class Logger:

        level_relations = { 'debug':logging.DEBUG, 'info':logging.INFO, 'warning':logging.WARNING, 'error':logging.ERROR, 'crit':logging.CRITICAL}

        def __init__(self, filename, level='info', when='D', backCount=3, fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):

        self.logger = logging.getLogger(filename)

        self.logger.setLevel(self.level_relations.get(level))

        sh = logging.StreamHandler() # 屏幕输出

        sh.setFormatter(logging.Formatter(fmt))

        th = handlers.TimedRotatingFileHandler(filename, when, backCount, 'utf-8') # 文件输出

        th.setFormatter(logging.Formatter(fmt))

        self.logger.addHandler(sh)

        self.logger.addHandler(th)

       if __name__ == '__main__':

        # 输出debug级别的日志到all.log

        log_all = Logger('all.log', level='debug')

        log_all.logger.debug('debug信息')

        log_all.logger.info('info信息')

        log_all.logger.warning('警告信息')

        log_all.logger.error('错误信息')

        log_all.logger.critical('严重错误')

        # 输出error级别的日志到error.log

        log_error = Logger('error.log', level='error')

        log_error.logger.error('error信息')

       上述代码展示了如何创建Logger对象,并将日志输出到屏幕和文件中,同时实现了不同日志文件的级别过滤和时间间隔分割。通过这种方式,我们可以方便地管理和跟踪各种级别的日志信息。