logging模块的学习记录

2018-05-14  本文已影响5人  一盏省油的小灯

参考官方文档

日志级别等级

Level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

两种方法生成日志文件:

1. 使用logging.basicConfig( )接口

通过设置filename等参数,可以将生成的日志,保存在filename指定的文件中,如果不指定filename参数,则会根据日志输出级别,将日志信息通过控制台打印出来。

# 文件名保存为 ‘‘ log.py ’’
import logging  

LOGGER_LEVEL = logging.INFO    #设置用户信息级别打印输出
logging.basicConfig(
                                level=LOGGER_LEVEL,  
                                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',    
                                datefmt='%a, %d %b %Y %H:%M:%S',
                                filename='test.log',
                                filemode='a'
                        )
logger = logging.getLogger(__file__)    

logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message') 

运行结果:

INFO:root:info message
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message

logging.basicConfig()接口参数说明

level=LOGGER_LEVEL, # 定义打印输出级别

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #设置打印输出格式 format可以输出很多有用信息,如上例所示: |%(...)s 输出为字符串 | %(...)d 输出为整数

datefmt='%a, %d %b %Y %H:%M:%S', # 设置asctime,也就是日期时间的打印格式

filename='test.log', # log保存的文件名称为 test.log

filemode='a' # 文件打开模式,‘a’就是追加,是默认参数,跟文件操作一样

2. 通过创建logger实例,实现文件保存日志和控制台打印输出日志

logger = logging.getLogger("name") #创建一个logger实例

# 文件名保存为 ‘‘ log1.py ’’
import logging
import sys

# 获取logger实例,如果参数为空则返回root logger
logger = logging.getLogger("name")

# 给实例指定日志的最低输出级别,默认为WARNING级别
logger.setLevel(logging.INFO)

# 指定logger输出格式,可以同时作用于文件日志和控制台日志的输出格式
formatter = logging.Formatter('%(asctime)s %(filename)s %(levelname)-8s: %(message)s')

# 文件日志,指定文件名称和保存日志的格式
file_handler = logging.FileHandler("test1.log")
file_handler.setFormatter(formatter)          # 可以通过setFormatter指定输出格式
# file_handler.formatter = formatter  # 也可以直接给formatter赋值

# 控制台日志,指定控制台输出格式
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
# console_handler.formatter = formatter  # 也可以直接给formatter赋值

# 为logger实例添加的日志处理器,文件处理器和控制台处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)

# 输出不同级别的log
logger.debug('this is debug info')
logger.info('this is information')
logger.warn('this is warning message')
logger.error('this is error message')
logger.critical('this is critical message')

输出结果如下:

2018-05-04 10:34:10,194 log1.py INFO    : this is information
2018-05-04 10:34:10,195 log1.py WARNING : this is warning message
2018-05-04 10:34:10,195 log1.py ERROR   : this is error message
2018-05-04 10:34:10,195 log1.py CRITICAL: this is critical message

上一篇 下一篇

猜你喜欢

热点阅读