import logging
logger = logging.getLogger() #生成一个日志对象,()内为日志对象的名字,可以不带,名字不给定就是root
handler=logging.FileHandler("Log_test.txt") #生成一个handler(处理器),
#formatter 下面代码指定日志的输出格式
fmt = ‘%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s‘
formatter = logging.Formatter(fmt) # 实例化formatter
handler.setFormatter(formatter) # 为handler添加formatter
logger.addHandler(handler)
logger.setLevel(logging.NOTSET) #设置日志输出信息的级别
logger.error("This is an error message") #输出设置小于级别的将不会输出,所以此处的设置应该比setLevel高
logger.info("This is an info message")
logger.critical("This is a critical message")
python可以生成很多handler,负责把logger创建的日志信息发送到指定的目的地,不同的Handler种类发送到不同的目的地。FileHandler将日志信息写入到文件中;StreamHandler将日志信息输出到控制台;SMTPHandler将日志信息以邮件的形式发送出去;SocketHandler将日志信息用TCP Socket发送出去;DatagramHandler将日志信息用UDP数据报发送出去
formatter的格式
属性名称 |
格式 |
说明 |
name |
%(name)s |
日志的名称 |
asctime |
%(asctime)s |
可读时间,默认格式‘2003-07-08 16:49:45,896’,逗号之后是毫秒 |
filename |
%(filename)s |
文件名,pathname的一部分 |
pathname |
%(pathname)s |
文件的全路径名称 |
funcName |
%(funcName)s |
调用日志多对应的方法名 |
levelname |
%(levelname)s |
日志的等级 |
levelno |
%(levelno)s |
数字化的日志等级 |
lineno |
%(lineno)d |
被记录日志在源码中的行数 |
module |
%(module)s |
模块名 |
msecs | %(msecs)d | 时间中的毫秒部分 |
process |
%(process)d |
进程的ID |
processName |
%(processName)s |
进程的名称 |
thread |
%(thread)d |
线程的ID |
threadName |
%(threadName)s |
线程的名称 |
relativeCreated |
%(relativeCreated)d |
日志被创建的相对时间,以毫秒为单位 |
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别