1. 日志记录级别

定义的记录级别越低,信息越多,级别越高,信息越少。

级别 数值
CRITICAL 50
ERROR 40
WARNING 30,默认
INFO 20
DEBUG 10
NOTSET 0

2. 使用basicConfig方法配置logging记录格式

格式 描述
filename 指定使用指定的文件名而不是StreamHandler创建FileHandler。
filemode 指定打开文件的模式,如果指定了filename(如果文件模式未指定,则默认为’a’)。
format 为处理程序使用指定的格式字符串。
datefmt 使用指定的日期/时间格式。
level 将根记录器级别设置为指定的级别。
handlers 如果指定,这应该是一个已经创建的处理程序的迭代器添加到根记录器。任何尚未设置格式化程序的处理程序都将被分配在此函数中创建的默认格式化程序。
# 举例
import threading
import logging
FORMAT = "%(asctime)s %(thread)d %(message)s"
logging.basicConfig(level=logging.INFO,format=FORMAT)
 
def add(x,y):
    logging.warning("{} {}".format(threading.enumerate(),x+y))
 
t = threading.Timer(1,add,args=(4,5))
t.start()
 
运行结果:
2017-12-17 15:40:34,226 123145367023616 [<_MainThread(MainThread, stopped 4320629568)>, <Timer(Thread-1, started 123145367023616)>] 9
# 修改日期格式:
DATEFMT ="[%Y-%m-%d %H:%M:%S]"
FORMAT = "%(asctime)s %(thread)d %(message)s"
logging.basicConfig(level=logging.INFO,format=FORMAT,datefmt=DATEFMT)
# 输出到文件
logging.basicConfig(level=logging.INFO,format=FORMAT,datefmt=DATEFMT,filename='class_test.log')
# 全: 文件路径不指定,默认为当前模块路径。
import threading
import logging
DATEFMT ="[%Y-%m-%d %H:%M:%S]"
FORMAT = "%(asctime)s %(thread)d %(message)s"
logging.basicConfig(level=logging.INFO,format=FORMAT,datefmt=DATEFMT,filename='class_test.log')
 
def add(x,y):
    logging.warning("{} {}".format(threading.enumerate(),x+y))
 
t = threading.Timer(1,add,args=(4,5))
t.start()
 
输出结果会追加写入当前模块路径的class_test.log文件:
[2017-12-17 15:50:13] 123145503244288 [<_MainThread(MainThread, stopped 4320629568)>, <Timer(Thread-1, started 123145503244288)>] 9