python中的日志应用

使用日志需要

import logging

日志常用分级为四个级别

debug 调试级别的日志

info 信息级别的日志

warning 警告级别的日志

error 错误级别的日志

 

logging.debug("this is a debug log")

loggging.inro("this is a info log")

logging.warning("this is a warning log")

logging.error("this is a error log")

会发现只打印到了warning和error这两个log。因为python默认只答应高级别的log,高于info的才被打印

可以通过配置来调整从什么级别的日志开始打印

logging.basicConfig(level=logging.DEBUG)

此时,打印就从debug级别开始。

那么日志如何输出到log文件当中呢?

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"   # asctime默认是年月日,十分秒毫秒格式

DATE_FORMAT = "%Y%m%d %H:%M:%S" #时间格式化,只显示到秒

logging.basicConfig(filename="my.log",level ="logging.DEBUG", format = LOG_FORMAT, dateformat = DATE_FORMAT)

logging.debug("this is a debug log")

loggging.inro("this is a info log")

logging.warning("this is a warning log")

logging.error("this is a error log")

log记录将被写入my.log日志文件中

 

下面通过另一种方式:日志对象 来操作记录日志

logger = logging.getLogger() #创建一个日志对象

logger.setLevel("DEBUG")

#文件处理器,日志输入到文件

file_handler = logging.FileHandler("all.log",mode='a', encoding="utf-8")

#流处理器,控制日志输入到控制台

steam_handler = logging.StreamHandler()

#错误日志单独输人到一个文件中

error_handler = logging.FileHandler("error.log", mode='a', encoding='utf-8')

error_handler.setLevel(logging.ERROR)

#将所有的处理器添加到logger中

logger.addHandler(file_handler)

logger.addHandler(steam_handler)

logger.addHandlder(error_handler)

#格式化

formatter = logging.Formatter(fmt = "%(asctime)s - %(levelname)s - %(message)s", datafmt ="%Y%m%d %H:%M:%S")

#设置格式化器,需要针对每一个处理器分别进行设置

file_handler.setFormatter(formatter)

steam_handler.setFormatter(formatter)

error_handler.setFormater(formatter)

 

logger.info("这是一个打印日志")laofang

logger.info("过滤器条件laofang")

logger.error("这是一个错误日志")

#过滤器,通过为某个处理器设置过滤器,实现包含条件的日志文件不被输入到该处理器中

my_filter = logging.Filter("laofang") #过滤器条件:laofang

file_handler.addFilter(my_filter) # file_handler中如果日志文件包含laofang字句,将不会被输入

# 注意上面两行过滤器的设置代码应该放在logger.addHandler(file_handler)上面,即在为日志对象添加处理器之前对处理器进行过滤器的设置。

posted @ 2019-12-30 14:42  老方学编程  阅读(217)  评论(0编辑  收藏  举报