PythonStudy——logging 模块

# 操作日志的模块
# 日志:日常的流水,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中
# 在正常的项目中,项目运行的一些打印信息,采用looging打印到文件中,这个过程就称之为 记录日志


# 非定制化配置
import
logging # logging为默认打印者,名字叫root,配置采用以下方式 h1 = logging.StreamHandler() h2 = logging.FileHandler('d.log') logging.basicConfig( # filename='my.log', # filemode='w', # stream=sys.stderr, # 往控制台打印采用具体的输出流 format='%(asctime)s [%(levelname)s]- %(name)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG, # 10, 代表DEBUG及DEBUG级别以上都能输出 handlers=[h1, h2] ) logging.debug("debug") logging.info("info") logging.warning("warning") logging.error("error") logging.critical("critical")
# 定制化配置

#
1.新建打印者 logger = logging.getLogger("Owen") # 2.创建句柄:输出的位置 stream_handler = logging.StreamHandler() a_file_handler = logging.FileHandler('a.log') b_file_handler = logging.FileHandler('b.log') # 3.打印者绑定句柄 logger.addHandler(stream_handler) logger.addHandler(a_file_handler) logger.addHandler(b_file_handler) # 4.设置格式 fmt1 = logging.Formatter('%(asctime)s - %(msg)s') fmt2 = logging.Formatter('%(asctime)s [%(name)s] - %(msg)s') # 5.为句柄绑定输出格式 stream_handler.setFormatter(fmt1) a_file_handler.setFormatter(fmt1) b_file_handler.setFormatter(fmt2) logger.critical('msg')

  多输出者

import logging
# 1.创建logger
log1 = logging.getLogger('Owen')
log2 = logging.getLogger('Zero')
r_log = logging

# 2.logger设置级别
log1.setLevel(logging.DEBUG)

# 3.设置句柄
h1 = logging.StreamHandler()

# 4.设置句柄级别:
# 1)系统句柄默认级别warning,
# 2)自定义的句柄级别默认同logger,也可以在logger基础上在加以限制
h1.setLevel(logging.DEBUG)

# 5.logger添加句柄
log1.addHandler(h1)

# log1可以打印DEBUG以上的信息,但往不同位置打印,采用不同句柄的二次级别限制
h2 = logging.FileHandler('c.log')
h2.setLevel(logging.WARNING)
log1.addHandler(h2)


log1.debug('debug')
log1.info('info')
log1.warning('warning')
log1.error('error')
log1.critical('critical')

log2.critical('00000')

r_log.critical('00000')

  定制版配置文件

# 1.配置
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'o_fmt1': {
            'format': '%(name)s:%(asctime)s - %(message)s'
        },
        'o_fmt2': {
            'format': '%(name)s:%(asctime)s [%(levelname)s] - %(message)s'
        }
    },
    'filters': {},
    'handlers': {
        'o_cmd': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'o_fmt1'
        },
        'o_file': {
            'level': 'WARNING',
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'o_fmt2',
            'filename': r'F:python8期课堂内容day20代码part4logging.log',  # 日志文件
            'maxBytes': 1024*1024*5,  # 日志大小 5M
            'backupCount': 5, #日志文件最大个数
            'encoding': 'utf-8',  # 日志文件的编码
        }
    },
    'loggers': {
        'o_owen': {
            'level': 'DEBUG',
            'handlers': ['o_cmd', 'o_file']
        },
        'o_zero': {
            'level': 'DEBUG',
            'handlers': ['o_file']
        }
    }
}

# 2.加载配置
import logging.config
logging.config.dictConfig(LOGGING_DIC)


# 3.使用
log = logging.getLogger('o_owen')
log.warning('123')
原文地址:https://www.cnblogs.com/tingguoguoyo/p/10896435.html