日志模块day_17

基本的日志配置

logging.basicConfig(filename='access.log',
                    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S %p',
                    level=10,
                    # stream=True
                    )

日志级别遵循原则:自下而上进行匹配 #debug-》info-》warning-》error-》critical
logging.debug('调试信息') #10
logging.info('正常信息') #20
logging.warning('不好啦着火啦') #30
logging.error('报错信息') #40
logging.critical('严重错误信息') #50

import logging
# logging模块包含四种角色:logger,filter,formatter,handler
#1、logger:负责产生日志信息
logger1=logging.getLogger('交易日志')
# logger2=logging.getLogger('用户相关')

#2、filter:负责筛选日志

#3、formatter:控制日志输出格式
formatter1=logging.Formatter(
    fmt='%(asctime)s:%(name)s:%(levelname)s:%(message)s',
    datefmt='%Y-%m-%d %X'
)
formatter2=logging.Formatter(
    fmt='%(asctime)s:%(message)s',
    datefmt='%Y-%m-%d %X'
)


#4、handler:负责日志输出的目标
h1=logging.FileHandler(filename='a1.log',encoding='utf-8')
h2=logging.FileHandler(filename='a2.log',encoding='utf-8')
sm=logging.StreamHandler()


#5、绑定logger对象与handler对象
logger1.addHandler(h1)
logger1.addHandler(h2)
logger1.addHandler(sm)

#6、绑定handler对象与formatter对象
h1.setFormatter(formatter1)
h2.setFormatter(formatter1)
sm.setFormatter(formatter2)

#7、设置日志级别:可以在两个关卡进行设置logger与handler
logger1.setLevel(10)
h1.setLevel(10)
h2.setLevel(10)
sm.setLevel(10)




logger1.info('xxxxx')

平时使用,在配置里面先定义字典

"""
logging配置
"""
import os
import logging.config

# 定义三种日志输出格式 开始
standard_format = '%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s'

simple_format = '%(asctime)s - %(levelname)s - %(message)s'

id_simple_format = '[%(asctime)s] %(message)s'


# log文件的全路径
logfile1_path = r'D:SH_fullstack_s2day17a1.log'
logfile2_path = r'D:SH_fullstack_s2day17a2.log'

# log配置字典
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'formatter1': {
            'format': standard_format
        },
        'formatter2': {
            'format': simple_format
        },
    },
    'filters': {},
    'handlers': {
        #打印到终端的日志
        'sm': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'formatter2'
        },
        #打印到文件的日志,收集info及以上的日志
        'h1': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',  # 保存到文件
            'formatter': 'formatter1',
            'filename': logfile1_path,  # 日志文件
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
        'h2': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',  # 保存到文件
            'formatter': 'formatter1',
            'filename': logfile2_path,  # 日志文件
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },

    },
    'loggers': {
        #logging.getLogger(__name__)拿到的logger配置
        'logger1': {
            'handlers': ['h1','h2','sm'],#这个logger1这个key,如果定义成''则表明如果找一圈没有找到就用''后面的value所以logger1一般都是定义成''
'level': 'DEBUG', 'propagate': False, # 向上(更高level的logger)传递 }, }, }

调用

import settings
import logging.config
logging.config.dicConfig(settings.LOGGING_DIC)
logger1=logging.getLogger('user')
logger1.debug('调试日志')
原文地址:https://www.cnblogs.com/xiaocao736427460/p/9354098.html