版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40313634/article/details/100782614
logging 模块
1 小例子: 在log文件输出log
代码语言:javascript复制# 内置库,不用安装
import logging
logging.basicConfig(
filename="test.log", # 日志保存文件
filemode="w", # 文件权限
datefmt="%d-%M-%Y %H:%M:%S", # 打印的时间格式
format="%(asctime)s %(name)s:%(levelname)s:%(message)s", # 打印的日志消息的格式
level=logging.DEBUG # 打印的日志级别 >= 此级别的信息会被打印:NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL
)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
结果
代码语言:javascript复制# test.log
12-40-2019 14:40:17 root:DEBUG:This is a debug message
12-40-2019 14:40:17 root:INFO:This is an info message
12-40-2019 14:40:17 root:WARNING:This is a warning message
12-40-2019 14:40:17 root:ERROR:This is an error message
12-40-2019 14:40:17 root:CRITICAL:This is a critical message
异常消息捕获
代码语言:javascript复制try:
10 / 0
except Exception as e:
logging.exception(e)
参数
参数名 | 参数描述 |
---|---|
filename | 日志输出到文件的文件名 |
filemode | 文件模式,r[ ]、w[ ]、a[ ] |
format | 日志输出的格式 |
datefat | 日志附带日期时间的格式 |
style | 格式占位符,默认为 “%” 和 “{}” |
level | 设置日志输出级别(默认:WARNING) |
2 分别在控制台、log 文件输出不同的log消息
代码语言:javascript复制import logging
import logging.handlers
# 根logger对象,后面所有的日志输出都调的是它
logger = logging.getLogger("logger")
# handler1: 输出到屏幕; handler2: 输出到文件
handler1 = logging.StreamHandler()
handler2 = logging.FileHandler(filename="test.log", encoding="utf-8")
# 屏幕打印error级别消息; 文件输出DEBUG级别消息
handler1.setLevel(logging.ERROR)
handler2.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)
logger.addHandler(handler1)
logger.addHandler(handler2)
logger.info('This is an customer info message')
logger.debug('This is a customer debug message')
logger.warning('This is a customer warning message')
logger.error('This is an customer error message')
logger.critical('This is a custo