• Python logging模块


    在logging模块的基础上,自定义出自己想要的格式

    学习记录:

     1 import logging
     2 
     3 
     4 # 收集器名字,默认root
     5 logger = logging.getLogger('自创日志')
     6 # 级别
     7 logger.setLevel(logging.INFO)
     8 # 渠道
     9 stream_handle = logging.StreamHandler()
    10 file_handle = logging.FileHandler('log.log', encoding='utf-8')
    11 # 内容格式
    12 fmt = '%(asctime)s | %(levelname)s | %(pathname)s | line:%(lineno)d | %(message)s'
    13 formatter = logging.Formatter(fmt)
    14 # 关联渠道和格式
    15 stream_handle.setFormatter(formatter)
    16 file_handle.setFormatter(formatter)
    17 # 设置好的渠道添加到日志收集器上
    18 logger.addHandler(stream_handle)
    19 logger.addHandler(file_handle)
    20 
    21 logger.info('test')
    22 logger.debug('debug级别')
    23 logger.error('error级别')
    日志量大时,可以:按时间生成日志文件,按大小生成日志文件
    from logging import handlers
    RotatingFileHandler() TimedRotatingFileHandler()
    日志名字
    日志级别(Level):DEBUG、INFO、WARNING、ERROR、CRITICAL(FATAL)
    输出渠道(Handler):控制台(StreamHandler)、文件(FileHandler)
    日志内容(Formatter):时间 - 哪个文件 - 哪行代码 - 输出内容

    进行封装

    对自定义的MyLogger类进行了实例化,其他模块调用这个类时,直接调用对象使用 logger.xxx()

     1 import logging
     2 
     3 
     4 class MyLogger(logging.Logger):
     5 
     6     def __init__(self, name, level=logging.DEBUG, file=None):
     7         super().__init__(name, level)
     8 
     9         # 输出内容的格式
    10         fmt = '%(asctime)s | %(levelname)s | %(pathname)s | line:%(lineno)d | %(message)s'
    11         formatter = logging.Formatter(fmt)
    12 
    13         # 控制台输出设置
    14         stream_handle = logging.StreamHandler()
    15         stream_handle.setFormatter(formatter)
    16         self.addHandler(stream_handle)
    17 
    18         # 文件输出设置
    19         if file:
    20             file_handle = logging.FileHandler(file, encoding='utf-8')
    21             file_handle.setFormatter(formatter)
    22             self.addHandler(file_handle)
    23 
    24 
    25 logger = MyLogger('收集器名字', file='日志文件名称.log')
    26 logger.info("test info")  # 测试

    优化:某些参数可以写在配置文件,然后读取。这样不同项目可以只改配置文件,而不需要改这个函数里的代码 

  • 相关阅读:
    Java基础学习篇---------static
    Java基础学习篇---------this、object的学习
    Java基础学习篇---------String、集合的学习
    Java基础学习篇---------多态
    Java基础学习篇---------继承
    Java基础学习篇---------封装
    Java基础学习篇---------多线程
    Handler主线程和子线程相通信
    Handler的使用
    c# DataGridView操作
  • 原文地址:https://www.cnblogs.com/sue2015/p/16078016.html
Copyright © 2020-2023  润新知