logging 日志模块的引入

大刘sir 0

一、logging模块介绍

是Python内置的标准模块,主要用于输出运行日志

为什么要使用日志?

日志:  系统在运行过程中的一些信息,系统日志、运行日志、错误日志、用户操作等等

要求:1. 所有日志需要可查,所有的日志需要保留下来,可以查看

2.日志需要分级别设置

二、输出日志到日志文件

控制台日志:

import logging

logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)

# 创建一个控制台输出的日志对象
console=logging.StreamHandler()
#设置日志的格式
formatter=logging.Formatter(‘%(asctime)s – %(filename)s[line:%(lineno)d] – %(levelname)s: %(message)s’)

console.setFormatter(formatter)
logger.addHandler(console)
logger.debug(‘—–调试信息[debug]—–‘)

logger.info(‘—–有用的信息[info]—–‘)

logger.warning(‘—–警告信息[warning]—–‘)

logger.error(‘—–错误信息[error]—–‘)

logging.critical(‘—–严重错误信息[critical]—–‘)

 

输出日志到log文件

import os
import logging
#设置日志路径
current_path=os.path.dirname(__file__)
log_path=os.path.join(current_path,‘../logs/test.log’)
#创建logger日志对象
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
#创建一个文件输出的日志对象
file_log=logging.FileHandler(log_path)
#设置日志格式
formatter=logging.Formatter(‘file:%(asctime)s – %(filename)s[line:%(lineno)d] – %(levelname)s: %(message)s’)
file_log.setFormatter(formatter)
#把文件输出的日志对象 传给logger日志对象
logger.addHandler(file_log)
logger.debug(‘—–调试信息[debug]—–‘)
logger.info(‘—–有用的信息[info]—–‘)
logger.warning(‘—–警告信息[warning]—–‘)
logger.error(‘—–错误信息[error]—–‘)
logger.critical(‘—–严重错误信息[critical]—–‘)

logger.info(‘Hello word!!!’)

 

把控制台输出日志,文件输出日志放一起

# encoding: utf-8
# @author: newdream_daliu
# @file: log_demo2.py
# @time: 2021-11-18 20:03
# @desc: 输出日志到文件
import os
import logging

#设置log日志文件的存放位置
current_path=os.path.dirname(__file__)
log_path=os.path.join(current_path,‘../logs/2021_11_18_test.log’)
# print(log_path)
logger=logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)

#控制台日志
console=logging.StreamHandler()
formatter=logging.Formatter(‘%(asctime)s – %(filename)s[line:%(lineno)d] – %(levelname)s: %(message)s’)
console.setFormatter(formatter)
logger.addHandler(console)

#文件日志
#创建一个log文件日志对象
file_log=logging.FileHandler(log_path,encoding=‘utf-8’)
#设置文件日志输出格式
formatter=logging.Formatter(‘file:%(asctime)s – %(filename)s[line:%(lineno)d] – %(levelname)s: %(message)s’)
file_log.setFormatter(formatter)
logger.addHandler(file_log)

logger.info(‘——-新梦想IT职业教育———–‘)
logger.error(‘———测试失败,元素识别失败————-‘)
logger.debug(‘—–调试信息[debug]—–‘)
logger.info(‘—–有用的信息[info]—–‘)
logger.warning(‘—–警告信息[warning]—–‘)
logger.error(‘—–错误信息[error]—–‘)
logger.critical(‘—–严重错误信息[critical]—–‘)

 

、日志级别的讲解及设置

DEBUG:调试信息
INFO:有用的信息
WARNING:警告信息 (默认日志级别)
ERROR:错误信息
CRITICAL:严重错误信息
NOTSET:非级别,表示不设置,按照父logger级别来过滤日志

方式1:

日志级别关系:

NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

备注:如果把log的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出。也就是说,日志级别越高,打印的日志越不详细。

方式2:

# log日志级别   NOTSET=0,DEBUG=10 INFORO=20 WARNING=30 ERROR=40 CRITICAL=50

找到setLevel,设置为具体的数字

logger.setLevel(level=40)


发表回复