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