zoukankan      html  css  js  c++  java
  • Python-logging模块

    logging(日志模块)

    python中logging模块是来记录我们程序运行的各种状态('很强大')

    一.日志级别

    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 吉泽明步
    上面的显示结果低于WARNING级别的就不显示了
    日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG
    python中的logging模块默认只显示大于等于WARNING级别的,默认将日志打印到标准输出台
    1 FATAL:致命错误
    2 CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用
    3 ERROR:发生错误时,如IO操作失败或者连接问题
    4 WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误
    5 INFO:处理请求或者状态变化等日常事务
    6 DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态
    日志等级
     
    logging基本配置在控制台输出
    import logging
    logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(lineno)d %(message)s')
    logger = logging.getLogger(__name__)
    logger.debug('debug 仓井空')
    logger.info('info 泷泽萝拉')
    logger.warning('warning 小泽玛利亚')
    logger.error('error 武藤兰')
    logger.critical('critical 吉泽明步 ')
    
    #结果:
    '''
    2019-01-16 16:40:34,044 - __main__ - 110 info 泷泽萝拉
    2019-01-16 16:40:34,044 - __main__ - 111 warning 小泽玛利亚
    2019-01-16 16:40:34,044 - __main__ - 112 error 武藤兰
    2019-01-16 16:40:34,044 - __main__ - 113 critical 吉泽明步 
    
    '''
    logging中可以选择很多消息级别,如debug、info、warning、error以及critical。
    通过赋予logger或者handler不同的级别,开发者就可以只输出错误信息到特定的记录文件,
    或者在调试时只记录调试信息。

    例如,我们将logger的级别改为DEBUG,再观察一下输出结果
    logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s - %(lineno)d %(message)s')

    logging.basicConfig函数各参数:

    filename:指定日志文件名;

    filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a';

    datefmt:指定日期时间格式。level:设置rootlogger

    level:设置日志级别,默认为logging.WARNNING;

    stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;

    format:指定输出的格式和内容,format可以输出很多有用的信息,

     1 format参数中可能用到的格式化串:
     2 %(name)s Logger的名字
     3 %(levelno)s 数字形式的日志级别
     4 %(levelname)s 文本形式的日志级别
     5 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
     6 %(filename)s 调用日志输出函数的模块的文件名
     7 %(module)s 调用日志输出函数的模块名
     8 %(funcName)s 调用日志输出函数的函数名
     9 %(lineno)d 调用日志输出函数的语句所在的代码行
    10 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
    11 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
    12 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    13 %(thread)d 线程ID。可能没有
    14 %(threadName)s 线程名。可能没有
    15 %(process)d 进程ID。可能没有
    16 %(message)s用户输出的消息
    format参数
    
    

    二.将日志写入文件

    设置logging,创建一个FileHandler,并对输出消息的格式进行设置,将其添加到logger,然后将日志写入到指定的文件中,

    import logging
    logger = logging.getLogger(__name__)
    logger.setLevel(level = logging.INFO)
    handler = logging.FileHandler("log.txt")
    handler.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    
    logger.info("Start print log")
    logger.debug("Do something")
    logger.warning("Something maybe fail.")
    logger.info("Finish")
     
    
    
  • 相关阅读:
    postgresql 高可用 etcd + patroni 之八 haproxy + keepalived
    postgresql 高可用 etcd + patroni 之七 haproxy
    postgresql 索引之 gin
    postgresql 索引之 btree
    postgresql 物理备份 barman 之 rsync/ssh backup
    postgresql 物理备份 barman 之 streaming backup
    postgresql 物理备份 barman 之 安装
    postgresql 的 .pgpass密码文件的使用
    postgresql 的 pg_hba.conf 的行记录顺序
    ubuntu 16.04 进入单用户模式
  • 原文地址:https://www.cnblogs.com/Tiamo-w/p/10277920.html
Copyright © 2011-2022 走看看