logging模块初识

前言:为什么要写log日志?

  1.为了排错

  2.用于数据分析

一、logginz模块常用用途:

1.记录用户的行为 - 数据分析
2.记录用户的行为 - 操作审计
3.排查代码中的错误

二、logging输出的内容是有等级的(升序),默认处理warning级别以上的所有信息

logging.debug('debug msg')       # 调试
logging.info('info msg')         # 信息
logging.warning('warning msg')   # 警告
logging.error('error msg')       # 错误
logging.critical('critical msg') # 批判性的

三、可以通过灵活配置日志级别,日志格式,输出位置等参数,使打印的日志更清晰易懂

当我们只想将日志输出到屏幕时:

import logging
logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p',
   level=logging.DEBUG # 因为默认只输出warning级别以上,所以在这里我们可以增加日志输出的级别
)

# 输出到屏幕:
logging.debug('debug msg test')
logging.warning('warning msg test')
logging.error('error msg test')
 

我们更多的是想要将日志写入文件:

# 输出到文件中并且设置可写入的等级:默认追加形式
import logging
logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', filename='temp.log', # 在这里定义要写入的文件名,默认为当前路径 level=logging.DEBUG ) logging.debug('debug msg 调试 test') logging.warning('warning 警告 msg test') logging.error('error msg 错误 test') logging.critical('critical msg 批判 test')

当你写入文件后,你发现文件中竟然会出现乱码,所以必须解决这个问题。

而同时你又想同时输入多个文件时:

# 同时向多个文件输入并解决乱码问题   和   向屏幕输出
import logging
fh = logging.FileHandler('temp.log', encoding='utf-8') # 文件1 fh2 = logging.FileHandler('temp2.log', encoding='utf-8') # 文件2 sh = logging.StreamHandler() # 向屏幕输出 logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=logging.DEBUG, handlers=[fh, fh2, sh] # 添加文件1、文件2、向屏幕输出的变量名 ) logging.debug('debug msg 调试 test') logging.warning('warning 警告 msg test') logging.error('error msg 错误 test') logging.critical('critical msg 批判 test')

四、日志的拆分

import time
from logging import handlers

# 按时间切分
fh = handlers.TimedRotatingFileHandler(filename='time_split.log', when='s', interval=5, encoding='utf-8')

# 按大小切分
rh = handlers.RotatingFileHandler('room_split.log', maxBytes=1012, backupCount=5)

# 输出到屏幕
sh = logging.StreamHandler()

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s:  %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
    level=logging.DEBUG,
    handlers=[fh, rh, sh]
)

for i in range(30):
    time.sleep(1)
    logging.debug('debug msg 调试 test')
    logging.warning('warning 警告 msg test')
    logging.error('error msg 错误 test')
    logging.critical('critical msg 批判 test')
原文地址:https://www.cnblogs.com/GOD-L/p/13369201.html