zoukankan      html  css  js  c++  java
  • 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:保留日志文件的个数  

  • 相关阅读:
    java数据类型转换
    复习Java基础
    最完整的台达PLC培训教程(沈阳工大)学习笔记1
    6.3.4 方法引用
    6.3.3函数式接口
    6.3 lambda 表达式
    java 核心技术卷一笔记 6 .2.3 接口 lambda 表达式 内部类
    java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
    java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类
    软件开发需求风险分析
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/8258757.html
Copyright © 2011-2022 走看看