# 内置库,不用安装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')
结果
# 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
异常消息捕获
try:10/0except Exception as e:
logging.exception(e)
参数
参数名
参数描述
filename
日志输出到文件的文件名
filemode
文件模式,r[+]、w[+]、a[+]
format
日志输出的格式
datefat
日志附带日期时间的格式
style
格式占位符,默认为 “%” 和 “{}”
level
设置日志输出级别(默认:WARNING)
2 分别在控制台、log 文件输出不同的log消息
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