其他分享
首页 > 其他分享> > pythom-day20-logging模块

pythom-day20-logging模块

作者:互联网

# logging :日志模块

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

# 1) root logging的基本使用:五个级别
# 2)root logging的基本配置:logging.basicConfig()
# 3)logging模块四个核心:Logger | Filter | Handler | Formater
# 4)logging模块的配置与使用
#     -- 配置文件:LOGGING_DIC = {}
#     -- 加载配置文件:logging.config.dictConfig(LOGGING_DIC) => logging.getLogger('log_name')
'''
# A logging的五个级别
import logging
logging.debug("debug")   # 10
logging.info("info")     # 20
logging.warning("warning")  # 30
logging.error("error")  # 40
logging.critical("critical")  # 50
# 右键 运行结果是
# WARNING:root:warning
# ERROR:root:error
# CRITICAL:root:critical
# 系统默认级别是从warning开始 小于warning的都不显示出来
'''

# B logging的基本配置案例以及图
'''
import logging
import os
# logging配置:格式化输出 1)输出的方式  2)输出的格式 3)输出的位置
h1 = logging.StreamHandler()  # 控制台输出的位置
h2 = logging.FileHandler('d.log')  # handler句柄 就是输出的位置   此处是文件的输出的位置
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")   # 10
logging.info("info")     # 20
logging.warning("warning")  # 30
logging.error("error")  # 40
logging.critical("critical")  # 50

# 运行的结果在d.log文件中是
# 2019-05-09 19 52 22 [DEBUG]-root: debug
# 2019-05-09 19 52 22 [INFO]-root: info
# 2019-05-09 19 52 22 [WARNING]-root: warning
# 2019-05-09 19 52 22 [ERROR]-root: error
# 2019-05-09 19 52 22 [CRITICAL]-root: critical
'''

# C  logging模块四个核心:Logger | Filter | Handler | Formater
# Logger: 打印者
# Filter:文件者
# Handler:句柄 就是文件输出的位置
# Formater:控制输出的格式

'''
import logging
# 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')  # 运行完之后自动创建a.log和b.log文件
# 并且在a中形成  2019-05-09 20:38:55,571 - msg
# 并且在b中形成 2019-05-09 20:38:55,571 [Owen] - msg
'''



# D 多输出者共存
'''
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')
'''


# E 配置文件的使用 可以套用(o_之类的可以改,其他的根据情况套用)

# 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'E:\AAA-博客.练习\day20常用模块3\logging.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')

 

标签:logging,log,log1,句柄,pythom,day20,warning,critical
来源: https://www.cnblogs.com/wakee/p/10841515.html