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')
原文地址:https://www.cnblogs.com/webc/p/8509881.html