• logging模块


    import logging
    from conf import settings
    
    def logger(log_type):
    
        # 生成 logger 对象
        logger = logging.getLogger(log_type)
        logger.setLevel(settings.LOG_LEVEL)
    
        # 生成handler对象,向文件输出日志信息
        log_file = "%s/log/%s.log" % (settings.BASE_DIR, log_type)
        global fh
        fh = logging.FileHandler(log_file)
        fh.setLevel(settings.LOG_LEVEL)
    
        # 生成formatter对象
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
        # formatter对象绑定到handler对象
        fh.setFormatter(formatter)
        if logger.handlers:  # 清空logger.handlers,否则会重复打印日志
            logger.handlers.pop()
        # handler对象绑定到logger
        logger.addHandler(fh)
    
        return logger
    logger.py
    %(name)s    Logger的名字
    %(levelno)s    数字形式的日志级别
    %(levelname)s    文本形式的日志级别
    %(pathname)s    调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s    调用日志输出函数的模块的文件名
    %(module)s    调用日志输出函数的模块名
    %(funcName)s    调用日志输出函数的函数名
    %(lineno)d    调用日志输出函数的语句所在的代码行
    %(created)f    当前时间,用UNIX标准的表示时间的浮 点数表示
    %(relativeCreated)d    输出日志信息时的,自Logger创建以 来的毫秒数
    %(asctime)s    字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d    线程ID。可能没有
    %(threadName)s    线程名。可能没有
    %(process)d    进程ID。可能没有
    %(message)s    用户输出的消息
    自定义格式

    生成logger对象

     1 def logger():
     2     logger = logging.getLogger()
     3 
     4     #设置logger
     5     fh = logging.FileHandler('text_log')#向文件发送信息
     6     ch = logging.StreamHandler()#向屏幕发送信息
     7 
     8     #定义格式
     9     fm = logging.Formatter('%(asctime)s %(filename)s')
    10     fh.setFormatter(fm)  #设置fh的格式
    11     ch.setFormatter(fm)  #设置ch的格式
    12 
    13     logger.addHandler(fh)  #传给logger
    14     logger.addHandler(ch)  #传给logger
    15     logger.setLevel('DEBUG')
    16 
    17     return logger

    调用logger

    logging的日志可以分为 debug(), info(), warning(), error() and critical()5个级别

    1 logger = logger()
    2 
    3 logging.debug('debug message')
    4 logging.info('info message')
    5 logging.warning('warning message')
    6 logging.error('error message')
    7 logging.critical('critical message')

    注意

    如果指定名称,则mylogger为root的子树,如果定义两个子树名字相同,则实际生成一个子树(根默认名称为root)

    1 logger1 = logging.getLogger('mylogger')
    2 
    3 logger2 = logging.getLogger('mylogger')
  • 相关阅读:
    Java Set 常用集合 HashSet、LinkedHashSet、TreeSet
    旋转数组的最小数字
    Java List 常用集合 ArrayList、LinkedList、Vector
    RestfulApi 学习笔记——内容协商(三)
    RestfulApi 学习笔记——.net core入门操作(二)
    不一样的模板模式(设计模式十一)
    RestfulApi 学习笔记——简单介绍(一)
    oracle 数据库连接
    重学c#系列——索引器(九)
    重新整理计算机组成原理(一)
  • 原文地址:https://www.cnblogs.com/webc/p/8509881.html
Copyright © 2020-2023  润新知