Python日志的功能比较庞大,基础的就是用basic的就logging.basicConfig()就可以,也可以自己去定义一些高端一点的模块,我把代码写在下面,大致的思路就是首先用logging.getLogger创建一个日志对象,用formatter去设置日志的格式,日志对象中处理输出到控制面板的采用logging.StreamHandler,可以单独设置这部分的层次和格式,日志对象中将日志存储在文件中的是FileHandler同样的可以控制层次和格式
import logginglog = logging.getLogger("日志")log.setLevel(logging.DEBUG)formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")sh = logging.StreamHandler()sh.setLevel(logging.INFO)sh.setFormatter(formatter)fh = logging.FileHandler(filename="日志文件")fh.setLevel(logging.INFO)fh.setFormatter(formatter)log.addHandler(sh)log.addHandler(fh)log.info("hello")
作为对比,下面是采用基础配置生成的日志,同样把日志输出在了屏幕和文件中
import loggingbc = logging.basicConfig(level = logging.INFO, filename="./name.log")logging.warning("1232323")
对于第一部分可以单独写成一个类作封装,主要的目的是在一个文件中不想写那么一大堆得日志文件,只需要两句代码实例化之后就调用,当然这里还可以封装的更好,我这里只是演示所以只满足了基础的功能。
import logging class log1(object): def __init__(self): self.log = logging.getLogger("日志") self.log.setLevel(logging.DEBUG) self.formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s") self.sh = logging.StreamHandler() self.sh.setLevel(logging.INFO) self.sh.setFormatter(self.formatter) self.fh = logging.FileHandler(filename="fileaa") self.fh.setLevel(logging.INFO) self.fh.setFormatter(self.formatter) self.log.addHandler(self.sh) self.log.addHandler(self.fh) def getlog(self): return self.log log2 = log1() # 实例化 log3 = log2.getlog() # 获取日志对象 log3.info("12323") #输出日志
控制台的日志