logging模块

一.用于日志的书写

默认情况下,Python的logging模块输出到标准输出上,级别比warning大的才会输出,

默认日志级别设置为WARNING(日志级别等级critical> error>warning>info>defout>notest)

 两个方法:

  logger=logging.getLogger(logger对象名)返回一个logger对象名字默认为root

  logger.setLevel(logging.级别)设置logger的日志级别

  logger.addHandler(logger对象)添加logger对象到logger中

一些参数:

  filename:用指定的文件名创建FileHander,日志会被存储到文件中

  filemod:指定文件的打开方式,默认为“a”

  format:指定handler的日志显示格式

  datefmt:指定日期显示格式

  level:设置rootlogger的日志级别

  stream:用指定的stream创建StreamHandler,可以指定输出到sys.stderr,sys.stdout或者文件

format参数:

  %(name)s logger的名字

  %(levelno)s数字形式的日志级别

import  logging
logging. basic Config( level=logging.DEBUG,
                                       format='%(asctime)s%(filename)s %[line:%(lineno)d]s   %(levelname)s %(massage)s'
                                         datefmt='%a  %d    %b  %y  %H:%M:%S'#这是对时间格式的设置
                                        filename='test.txt'#是对输出文件的名字,可以是绝对路径
                                        filemod='a'#文件的模式,默认为a模式)


logging. debug('debug  massage')
logging. info('info  massage')
logging. warning('warning   massage')
logging. error('error  massage')
logging. critical( 'critical  massage')
import    logging
logger=logging.getLogger()
fh = logging.FileHandler('test.log')#创建一个handler,用于写入日志文件
ch = logging.StreamHandler()#创建一个handler,用于输出到控制台
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(massage)s')
fh.setFormatter(formatter)
ch.Formatter(formatter)
logger.setLevel(logging.DEBUG)
logger.debug('logger debug massage')
logger.info('logger info massage')

写一个函数用于logging模块,以后调用只需要调用该函数

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(setting.USER_DIR_FOLDER,card_num,'record',file_name)
        encoding='utf-8'
)    
    fmt = logging.Formatter(fmt="%(asctime)s : %(massage)s")
    file_handler.setFormatter(fmt)
    logger1=logging.Logger('user_logger',level=logging.INFO)
    odder1.addHandler(file_name)
    return logger1
原文地址:https://www.cnblogs.com/gjx1212/p/11703161.html