内置库 Python logging 高级使用
作者:互联网
python日志进阶
学习网站:https://docs.python.org/3/howto/logging.html
组件 |
说明 |
loggers |
提供应用程序代码直接使用的接口 |
handlers | 用于将日志记录发送到指定的目的位置 |
filters | 提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出 |
formatters | 用于控制日志信息的最终输出格式 |
过滤器和格式器需放在处理器handler里,handler需放在loggers里
处理器可以控制log是输出在控制台还是文件
一个logger可以加多个handler
Logging Flow
log封装
#1.使用代码封装
def get_logger():
# create logger 定义记录器
logger = logging.getLogger(os.path.basename(__file__))
logger.setLevel(logging.DEBUG)
# create console handler and set level to debug
ch = logging.FileHandler(filename='mylog.log', encoding="utf-8")
ch.setLevel(logging.DEBUG)
# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to ch
ch.setFormatter(formatter)
# add ch to logger
logger.addHandler(ch)
return logger
#引用:
logger = get_logger()
logger.debug('debug message!')
logger.info('info message!')
#2.使用logging.conf来封装
[loggers] # loggers 对象列表
keys=root,main
[handlers] # handlers 对象列表
keys=consoleHandlers,fileHandlers
[formatters] # formatters 列表
keys=fmt
[logger_root]
level=DEBUG
handlers=consoleHandlers,fileHandlers
[logger_main] # main logger
level = DEBUG
handlers = fileHandlers
qualname=main
propagate=0
[handler_consoleHandlers]# consoleHandlers 指定控制器的输出方向、级别、输出格式、参数
class = StreamHandler
level = DEBUG
formatter = fmt
args = (sys.stdout,)
[handler_fileHandlers]]# 循环日志文件 以文件大小来 分割# 每隔 1000 Byte 划分一个日志文件,备份文件为 3 个
class = logging.handlers.RotatingFileHandler
level = DEBUG
formatter = fmt
args = ('./logs/test.log', 'a', 10000, 3, 'UTF-8') #放置log的地方
[formatter_fmt] # fmt 格式
format=%(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
datefmt=
#引用:
import logging.config
logging.config.fileConfig("logging.conf")
logger = logging.getLogger("main")
logger.debug("this is debug log!!")
标签:内置,logging,handlers,Python,DEBUG,logger,formatter,日志 来源: https://www.cnblogs.com/manshuoli/p/16224074.html