• Python学习系列之logging模块


    实例一:日志写进一个文件

    代码:

    import logging
    
    logging.basicConfig(level=logging.DEBUG,
    format='%(asctime)s  %(filename)s [line:%(lineno)d] %(levelname)s  %(message)s', #定义日志格式
    datefmt='%Y-%m-%d %H:%M:%S %p', #定义asctime
    filename='test.log',            #定义日志文件
    filemode='a')                   #定义写入模式,'a'是追加的意思
    
    
    
     login():
        while True:
            try:
                name = input('Input user name:')
                password = int(input('Input password:'))   #这里故意转成整型,触发异常
                if name == 'andy' and password == 'nopasswd':
                    print('logging succeed!')
            except ValueError as e:
                logging.info(e)      #这里写入日志
                break
    
    if __name__ == '__main__':
        login()  

    format解释:

    • asctime:时间,按照datefmt定义的显示,2018-01-10 14:50:25
    • filename:报错的python文件名称
    • line:%(lineno)d:报错的行数
    • levelname:报错级别
    • message:报错的信息

    测试:

    [root@admin_bak shell]# python3.6  test_log.py
    Input user name:asdasd
    Input password:asdsad  #这是输入字符串,触发异常  

    查看日志

    2018-01-10 11:54:40 AM test_log.py test_log.py[line:21] DEBUG invalid literal for int() with base 10: 'asdsad'  

    实例二:实现每天一个日志文件

    代码:

    import time
    
    import logging
    import logging.handlers
    
    LOG_FILE = "ping.log"          #设置日志文件名称
    logger = logging.getLogger()   #实例化logging
    logger.setLevel(logging.INFO)  #设置日志级别
    
    
    #添加TimedRotatingFileHandler  
    #定义一秒换一次log文件的handlers
    #保留3个旧log文件
    fh = logging.handlers.TimedRotatingFileHandler(LOG_FILE, when='D', interval=1, backupCount=10)
    #定义asctime datefmt = '%Y-%m-%d %H:%M:%S'
    #定义日志格式 format_str = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s' formatter = logging.Formatter(format_str, datefmt) fh.setFormatter(formatter) logger.addHandler(fh) while True: time.sleep(0.1) logging.info("test")

    TimedRotatingFileHandler

    TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])#需要传的参数

    filename:日志文件

    when:

    "S":second

    "M":minutes

    "H":Hours

    "D":Days

    "W":week day (0=monday)

    interval:是指等待多少个"when"时间后,logging会自动新建文件,比如when='S',interval=10,就是10个一秒后新建文件,也就是10秒,when='D',interval=1,就是一天一个文件

    backupCount:保留日志文件的个数  

  • 相关阅读:
    BZOJ1183 Croatian2008 Umnozak 【数位DP】*
    算法--斯坦纳树
    BZOJ2595 Wc2008 游览计划 【斯坦纳树】【状压DP】*
    BZOJ1833 ZJOI2010 count 数字计数 【数位DP】
    BZOJ1087 SCOI2005 互不侵犯King 【状压DP】
    BZOJ1026 SCOI2009 windy数 【数位DP】
    pytest灵魂产物
    django限流全局和单个视图
    论文阅读笔记四十一:Very Deep Convolutional Networks For Large-Scale Image Recongnition(VGG ICLR2015)
    某线 生成式模型预测算法实习生面试总结
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/8258757.html
Copyright © 2020-2023  润新知