Bootstrap

Python中日志模块

Python中日志模块

  1. 写日志的目的是什么?
    写日志就是为了我们能够对出现的错误进行跟踪,方便在写程序的过程中进行排错
  2. python日志怎么写
    python中需要导入相应的日志模块
    import logging

基础的python中日志的写法

import logging

logging.basicConfig(filename="log.log",
                    format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',
                    level=10
                    )
# filename ----日志保存的文件名称
# formant  ----日志保存的格式
# datefmt -----设置每条日志保存的时间格式
# level   -----日志等级,就是我们需要判断等级,比如 错误可以忽略不计的,可以容忍的错误,严重的错误以及非常严重的错误,
#只有当等级大于等于level时候,才会被写入到日志文件中,否则不会被写入文件
logging.debug("x1") # 10 测试等级 10
logging.info("x1")  # 20 正常信息等级20
logging.warning("x1") # 30 警告信息等级30 
logging.error("x1") # 40 错误等级40
logging.critical("x1") #50 严重错误等级 50

# logging.log(10,"x1")
 

但是日志这里需要注意的是,这种基础创建日志的方法,不管我们创建多少日志对象,都只会被写到一个日志文件中

import logging

obj_log1 = logging.basicConfig(filename="log.log",
                    format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',
                    level=10
                    )
logging.error("错误信息1")
obj_log2 = logging.basicConfig(filename="log2.log",
                    format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',
                    level=10
                    )
logging.error("错误信息2")
#虽然我们写了两个logging对象,obj_log1,obj_log2,但是生成的日志信息都只会保存到log.log文件中,而不会保存到log2.log文件中,
#为了解决这个问题我们可以创建filehandler
file_handler = logging.FileHandler("log1.log","a",encoding="utf-8")
file_handler.setFormatter(logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s'))
logger1 = logging.Logger("log1",level=logging.ERROR)
logger1.addHandler(file_handler)
logger1.error("logger1的错误信息")

file_handler2 = logging.FileHandler("log2.log","a",encoding="utf-8")
file_handler.setFormatter(logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s'))
logger2 = logging.Logger("log2",level=logging.ERROR)
logger2.addHandler(file_handler2)
logger2.error("logger2的错误信息")
#这样我们就将日志信息写到了两个不同的日志文件中
;