Python 中logging使用

1.log级别

级别 何时使用
DEBUG 详细信息,典型地调试问题时会感兴趣。
INFO 证明事情按预期工作。
WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。
ERROR 由于更严重的问题,软件已不能执行一些功能了。
CRITICAL 严重错误,表明软件已不能继续运行了。

2.简单例子

import logging  

# 创建一个logger  
logger = logging.getLogger('mylogger')  #
logger.setLevel(logging.DEBUG)  

# 创建一个handler,用于写入日志文件  
fh = logging.FileHandler('test.log')  
fh.setLevel(logging.DEBUG)  

# 再创建一个handler,用于输出到控制台  
ch = logging.StreamHandler()  
ch.setLevel(logging.DEBUG)  

# 定义handler的输出格式  
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
fh.setFormatter(formatter)  
ch.setFormatter(formatter)  

# 给logger添加handler  
logger.addHandler(fh)  
logger.addHandler(ch)  

# 记录一条日志  
logger.info('foorbar')

3.项目使用

settings.py文件

LOG_LEVEL = logging.INFO
LOG_TYPES = {
    'transaction': 'transactions.log',
    'access': 'access.log',
}

logger.py

import logging
from conf import settings

def logger(log_type):

    #create logger
    logger = logging.getLogger(log_type)
    logger.setLevel(settings.LOG_LEVEL)


    # create console handler and set level to debug
    ch = logging.StreamHandler()
    ch.setLevel(settings.LOG_LEVEL)

    # create file handler and set level to warning
    log_file = "%s/log/%s" %(settings.BASE_DIR, settings.LOG_TYPES[log_type])
    fh = logging.FileHandler(log_file)
    fh.setLevel(settings.LOG_LEVEL)
    # create formatter
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    # add formatter to ch and fh
    ch.setFormatter(formatter)
    fh.setFormatter(formatter)

    # add ch and fh to logger
    logger.addHandler(ch)
    logger.addHandler(fh)

    return logger
    # 'application' code
    '''logger.debug('debug message')
    logger.info('info message')
    logger.warn('warn message')
    logger.error('error message')
    logger.critical('critical message')'''

实例两个log文件

import logger
#Python小白学习交流群:725638078
#transaction logger
trans_logger = logger.logger('transaction')
#access logger
access_logger = logger.logger('access')

调用

acc_data = auth.acc_login(user_data,access_logger)

def acc_login(user_data,log_obj):
        log_obj.error("account [%s] too many login attempts" % account)

你可能感兴趣的:(服务器,python)