• log


    logging级别

    DEBUG : 详细信息,一般用于调试
    INFO : 程序正常运行中产生的一些信息
    WARNING : 警告用户,虽然程序还在正常工作,但有可能发生错误
    ERROR : 由于更严重的问题,程序已经不能执行一些功能了
    CRITICAL: 程序发生严重错误,不能正常运行

    默认的级别是WARNING,只有在这个级别之上的才会被记录
    demo:

    import logging
    
    logging.debug('debug的信息')
    logging.info('info的信息')
    logging.warning('warning的信息')
    logging.error('error的信息')
    logging.critical('critical的信息')
    

    运行结果如下:

    WARNING:root:warning的信息
    ERROR:root:error的信息
    CRITICAL:root:critical的信息
    

    自定义级别,输出到文件

    logging.basicConfig()

    自定义级别  level=logging.DEBUG  (DEBUG级别以上的记录)
    保存到文件	filename=文件路径    #每次执行都会在文件的末尾追加
    每次保存到文件后重新记录	filemode='w' 
    

    demo:记录info级别以上的日志,保存在log.txt文件中

    import logging
    import logging
    logging.basicConfig(filename='log.txt',level=logging.INFO)
    
    logging.debug('debug的信息')
    logging.info('info的信息')
    logging.warning('warning的信息')
    logging.error('error的信息')
    logging.critical('critical的信息')
    

    运行后在当前目录新建一个log.txt文件,然后记录INFO级别以上的日志,如果多次运行,每次都是在该文件的末尾追加日志内容
    如果需要在每次运行的时候清空文件内容,basicConfig()参数增加一个 filemode='w'

    3.格式化输出
    format()

    demo: 不想要默认输出的中间那个root用户字段

    import logging
    logging.basicConfig(format='%(levelname)s:%(message)s',level=logging.INFO)
    logging.debug('debug的信息')
    logging.info('info的信息')
    logging.warning('warning的信息')
    logging.error('error的信息')
    logging.critical('critical的信息')
    

    输出:

    INFO:info的信息
    WARNING:warning的信息
    ERROR:error的信息
    

    对于%(levelname)s这种东西,是logging模块内置的,可以被输出到日志中的对象(末尾会有更多的相关内容)

    记录日志时间

    logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO)
    修改上述basicConfig如上
    输出:

    2020-12-09 16:38:44,285:INFO:info的信息
    2020-12-09 16:38:44,288:WARNING:warning的信息
    2020-12-09 16:38:44,290:ERROR:error的信息
    2020-12-09 16:38:44,292:CRITICAL:critical的信息
    

    格式化日期的输出格式 同 time.strftime() 这里在basicConfig中添加datefmt参数
    demo:
    logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO,datefmt='%Y-%m-%D %H:%M:%S')
    修改上述basicConfig如上
    输出:

    2020-12-12/09/20 16:42:55:INFO:info的信息
    2020-12-12/09/20 16:42:55:WARNING:warning的信息
    2020-12-12/09/20 16:42:55:ERROR:error的信息
    2020-12-12/09/20 16:42:55:CRITICAL:critical的信息
    

    关于更多的可以被输出到日志中的对象

    属性 格式 描述
    asctime %(asctime)s 日志产生的时间,默认格式为2003-07-08 16:49:45,896
    created %(created)f time.time()生成的日志创建时间戳
    filename %(filename)s 生成日志的文件名字 路径
    funcName %(funcName)s 调用日志的函数名
    levelname %(levelname)s 日志级别 ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
    levelno %(levelno)s 日志级别对应的数值
    lineno %(lineno)d 日志所针对的代码行号(如果可用的话)
    module %(module)s 生成日志的模块名
    msecs %(msecs)d 日志生成时间的毫秒部分
    message %(message)s 具体的日志信息
    name %(name)s 日志调用者
    pathname %(pathname)s 生成日志的文件的完整路径
    process %(process)d 生成日志的进程ID(如果可用)
    processName %(processName)s 进程名(如果可用)
    thread %(thread)d 生成日志的线程ID(如果可用)
    threadName %(threadName)s 线程名(如果可用)
  • 相关阅读:
    Java_JAVA6动态编译的问题
    Java_动态加载类(英文)
    Java_Java Compiler 应用实例
    Java_关于App class loader的总结
    Java_动态加载
    Java_Java SE6调用动态编译
    python捕获Ctrl+C信号
    python使用协程并发
    python使用多进程
    python使用多线程
  • 原文地址:https://www.cnblogs.com/alantammm/p/14109726.html
Copyright © 2020-2023  润新知