1. 程式人生 > >學習python語言-----logging模塊(轉 記錄與學習)

學習python語言-----logging模塊(轉 記錄與學習)

配置日誌 deb log form struct handler gin eno formatter

一、靈活配置日誌輸出

import logging  
logging.basicConfig(level=logging.DEBUG,  
                    format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s,  
                    datefmt=%a, %d %b %Y %H:%M:%S,  
                    filename=/tmp/test.log,  #若無此項,則默認輸出於控制臺
                    filemode
=w) #w用於刷新紀錄,a用於增加記錄,默認為a
#5個日誌記錄級別 logging.debug(
debug message) logging.info(info message) logging.warning(warning message) logging.error(error message) logging.critical(critical message)

二、使用logger對象

import logging

logger = logging.getLogger()
# 創建一個handler,用於寫入日誌文件
fh = logging.FileHandler(
test.log) # 再創建一個handler,用於輸出到控制臺 ch = logging.StreamHandler() formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s) fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler(fh) #logger對象可以添加多個fh和ch對象 logger.addHandler(ch) logger.debug(logger debug message
) logger.info(logger info message) logger.warning(logger warning message) logger.error(logger error message) logger.critical(logger critical message)

二、應用logger,創建一個封裝好了的函數

import os
import time
import logging
from config import settings


def get_logger(card_num, struct_time):

    if struct_time.tm_mday < 23:
        file_name = "%s_%s_%d" %(struct_time.tm_year, struct_time.tm_mon, 22)
    else:
        file_name = "%s_%s_%d" %(struct_time.tm_year, struct_time.tm_mon+1, 22)

    file_handler = logging.FileHandler(
        os.path.join(settings.USER_DIR_FOLDER, card_num, record, file_name),
        encoding=utf-8
    )
    fmt = logging.Formatter(fmt="%(asctime)s :  %(message)s")
    file_handler.setFormatter(fmt)

    logger1 = logging.Logger(user_logger, level=logging.INFO)
    logger1.addHandler(file_handler)
    return logger1

可以直接進行調用,這個針對的是銀行日誌記錄

logger = get_logger()

logger.info(‘spend %s $‘%52)

學習python語言-----logging模塊(轉 記錄與學習)