• [Python] iupdatable包:日志模块使用介绍


    一、说明

    日志模块是对 logging 模块的单例封装

    特点:

    • 可同时向控制台和文件输出日志,并可选择关闭其中一种方式的输出;
    • 集成colorlog,实现根据日志等级不同,控制台输出日志颜色不同;
    • 灵活切换是否输出调试内容

     

    二、简单示例

    安装 iupdatable 包

    pip install --upgrade iupdatable

    使用实例:

     1 from iupdatable.logging.Logger import Logger
     2 from iupdatable.logging.LogLevel import LogLevel
     3 
     4 
     5 def test_logging():
     6     # 日志等级:
     7     # CRITICAL  同:FATEL,下同
     8     # ERROR
     9     # WARNING
    10     # INFO
    11     # DEBUG
    12     # NOTSET    按照 WARNING 级别输出
    13 
    14     # 设置为 DEBUG,输出所有信息
    15     # 设置为 WARNING, INFO、DEBUG 级别的日志就不会输出
    16     Logger.get_instance().config(log_level=LogLevel.DEBUG)
    17 
    18     Logger.get_instance().debug('debug message1')
    19     Logger.get_instance().info('info message1')
    20     Logger.get_instance().warning('warning message1')
    21     Logger.get_instance().error('error message1')
    22     Logger.get_instance().debug('debug message1', is_with_debug_info=True)  # 要想输出具体的调试信息
    23     Logger.get_instance().fatal('fatal message1')
    24     Logger.get_instance().critical('critical message1')  # fatal = critical
    25 
    26     # 也可以输出变量
    27     abc = [1, 2, 4]
    28     Logger.get_instance().info(abc)
    29 
    30 
    31 test_logging()

    控制台输出:

    上面的内容也会同时输出到 all.log 的日志文件中,此外 all.log 的日志会在新一天开始对日志按照天进行归档。

    三、参数说明

    1. Logger.get_instance().config(...)

    函数用于设置日志的各项配置

    建议在日志使用前调用该函数。不调用该函数,直接使用日志的话,后台会按照默认参数调用该函数。

    日志的使用过程中也可以重新调用该函数,对日志进行重新设置。

    全部参数说明如下:

    log_level:           日志输出等级,参考:LogLevel 的值,默认为 DEBUG 等级
    log_file_full_path:  日志输出的文件名的完整路径,默认:all.log
    date_format:         每天日志前日期时间的格式,默认: %Y-%m-%d %H:%M:%S
    is_with_datetime:    是否在每条日志前添加日期时间,默认:True
    is_with_level:       是否在每天日志前添加日志等级,默认:True
    is_output_file:      是否将日志输出到文件,默认:True
    is_output_console:   是否将日志输出到控制台,默认:True
    is_colored:          是否将控制台的输出设为彩色,默认:True

    2. is_with_debug_info

    这个一个可选参数,所有的日志函数均有该项,表示是否在输出的日志中添加调试信息,包括:文件的具体位置,函数名,代码的行号,默认:False,即:默认不添加

    使用下面代码举例:

     1 from iupdatable.logging.Logger import Logger
     2 from iupdatable.logging.LogLevel import LogLevel
     3 
     4 
     5 def logging_debug_info():
     6     Logger.get_instance().debug('message',   is_with_debug_info=True)
     7     Logger.get_instance().info('message',    is_with_debug_info=True)
     8     Logger.get_instance().warning('message',  is_with_debug_info=True)
     9     Logger.get_instance().error('message',     is_with_debug_info=True)
    10     Logger.get_instance().fatal('message',     is_with_debug_info=True)
    11     Logger.get_instance().critical('message',  is_with_debug_info=True)
    12 
    13 
    14 logging_debug_info()

    输出内容就会变成:

     

    主要用途是在try except中使用,方便在日志中定位出错信息:

        try:
            print('to do')
        except Exception as e:
            Logger.error(repr(e), is_with_debug_info=True)
  • 相关阅读:
    Java 线程具有五中基本状态 ?
    可以直接调用 Thread 类的 run ()方法么?
    创建线程的三种方式的对比?
    FutureTask 是什么 ?
    什么是 CAS?
    如何让正在运行的线程暂停一段时间?
    什么是不可变对象(immutable object)?Java 中怎么 创建一个不可变对象?
    创建线程的有哪些方式?
    Semaphore 有什么作用 ?
    CopyOnWriteArrayList 可以用于什么应用场景?
  • 原文地址:https://www.cnblogs.com/IUpdatable/p/12497624.html
Copyright © 2020-2023  润新知