• logging基本使用方法


    步骤:
    1.配置日志信息 logging.basicConfig
    2.取得 logging.Logger 对象
    3.使用 Logger 对象输出信息
    以下是一个简单的封装,模拟实现 Android 中的 Log 类
    import logging
    import sys
    
    str_def_fmt = "%(asctime)s.%(msecs)03d %(thread)d %(levelname)s " 
                  "%(module)s %(filename)s:%(lineno)d %(funcName)s: %(message)s"
    logging.basicConfig(level=logging.DEBUG
                        , format=str_def_fmt
                        , datefmt="%Y:%m:%d %H:%M:%S"
                        , stream=sys.stdout)
    logger = logging.getLogger("log")
    
    
    def setAsDebugLevel():
        logger.setLevel(logging.DEBUG)
    
    def setAsInfoLevel():
        logger.setLevel(logging.INFO)
    
    def setAsWarnLevel():
        logger.setLevel(logging.WARN)
    
    def setAsErrorLevel():
        logger.setLevel(logging.ERROR)
    
    def setAsFatalLevel():
        logger.setLevel(logging.FATAL)
    
    d = logger.debug
    i = logger.info
    w = logger.warning
    e = logger.error
    f = logger.fatal
    
    
    def main():
        d("test debug msg")
        i("test info msg")
        w("test warn msg")
        e("test err msg")
        f("test fatal msg")
    
    
    if __name__ == "__main__":
        main()


    相关参数说明:

    logging.basicConfig 参数说明
        默认会创建一个 StreamHandler 并输出到 sys.stderr, 并且使用 BASIC_FORMAT(%(levelname)s:%(name)s:%(message)s) 格式化信息
    
    filename:    指定日志文件名, 此时不会再输出到 StreamHandler 中, 即使指定了新的 stream
    filemode:    指定日志文件的打开模式, 'w'或者'a', 默认为'a'
    format:      指定输出的内容格式, 其配置信息见下文
    datefmt:     输出日期和时间的格式字符串. 与 time.strftime 格式兼容, 不能指定到毫秒级别, 其详细信息见下文
    level        设置日志输出的级别, 小于此级别的信息将被忽略, 默认为 WARNING
    stream       指定输出的流, 默认为 sys.stderr, 如果指定了 filename, 此参数不起作用
    handlers     If specified, this should be an iterable of already created handlers, which will be added to the root handler. Any handler in the list which does not have a formatter assigned will be assigned the formatter created in this function.
    force        If this keyword is specified as true, any existing handlers attached to the root logger are removed and closed, before carrying out the configuration as specified by the other arguments.
    
    
    日志级别:
    级别                 值       描述
    CRITICAL/FATAL       50       关键错误消息
    ERROR                40       错误
    WARNING(WARN)        30       警告消息
    INFO                 20       通知消息
    DEBUG                10       调试
    NOTSET               0        无级别
    
    
    format 配置格式:
    %(name)s            logger 名称, 即调用 logging.getLogger 函数传入的参数
    %(levelno)s         数字形式的日志记录级别
    %(levelname)s       日志级别文本描述, 即"DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
    %(pathname)s        执行日志记录调用的源文件路径
    %(filename)s        执行日志记录调用的源文件名
    %(module)s          执行日志记录调用的模块名称
    %(lineno)d          执行日志记录调用的行号
    %(funcName)s        执行日志记录调用的函数路径
    %(created)f         执行日志记录调用的时间, 它是 time.time() 返回的数字
    %(asctime)s         执行日志记录调用的ascii格式的时间, 其格式由 datefmt 指定
    %(msecs)d           执行日志记录调用的时间中的毫秒部分
    %(thread)d          线程id (if available)
    %(threadName)s      线程名称 (if available)
    %(process)d         进程ID (if available)
    %(message)s         记录的消息, 如 logging.getLogger().debug(msg) 指定的 msg
    
    
    datefmt
    %y        两位数的年份表示(00-99%Y        四位数的年份表示(000-9999%m        月份(01-12%d        月内中的一天(0-31%H        24小时制小时数(0-23%I        12小时制小时数(01-12%M        分钟数(00=59%S        秒(00-59%a        本地简化星期名称
    %A        本地完整星期名称
    %b        本地简化的月份名称
    %B        本地完整的月份名称
    %c        本地相应的日期表示和时间表示
    %j        年内的一天(001-366%p        本地A.M.或P.M.的等价符
    %U        一年中的星期数(00-53)星期天为星期的开始
    %w        星期(0-6),星期天为星期的开始
    %W        一年中的星期数(00-53)星期一为星期的开始
    %x        本地相应的日期表示
    %X        本地相应的时间表示
    %Z        当前时区的名称
    %%        %号本身
  • 相关阅读:
    c++ 存储连续性,作用域和链接性注意点
    函数模板的知识点总结
    c++ 左值引用的注意点
    VS2015如何在同一个解决方案下建立多个项目及多个项目之间的引用
    编译opencv4.1.0+tesseract5.0 的Realease x64版本遇见的问题解决
    逻辑化简-卡诺图
    从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 (转载)
    matlab绘图
    多个EXCEL文件合并成一个
    数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)
  • 原文地址:https://www.cnblogs.com/diysoul/p/12322158.html
Copyright © 2020-2023  润新知