python logging日志的应用
程序员文章站
2022-07-15 08:11:00
...
@python logging日志的应用
python 实现日志的收集
- logging模块 实现日志收集
1.ogging模块与Print区别:可以实现不同级别日志的输出 - logging模块的应用 内置模块
1.Logger 日志器 提供一个入口,供所有的应用程序接口使用
2.Handler 处理器 决定日志输出的位置
3.Formator 格式器 决定日志显示的内容
4.Filter过滤器 筛选感兴趣的内容
关系:一个Logger日志器可以有多个处理器,每个处理器都有各自的格式器和过滤器 - 代码如何实现
1.考虑日志级别
五大级别:从低到高
1、debug 调试信息
2、info 关键时间描述
3、warning 警告
4、error 错误
5、critical 严重
实现日志的输出
import logging
#创建一个日志器
logger=logging.getLogger(‘日志名称')
#设置日志的输出最低级别 默认输出最低级别是warning
logger.setLevel(logging.INFO)
创建一个处理器handler 控制台进行日志输出
console=logging.StreamHandler()
#创建一个文件处理器
console1 = logging.FileHandler(filename=f'{time.strftime("%Y-%m-%d-%H-%M-%S",time.localtime())}_log',encoding="utf‐8")
#创建一个格式器(包含数据(时间 +文件名+错误信息+错误等级),并制定格式)
console = logging.FileHandler(filename=f'{time.strftime("%Y-%m-%d-%H-%M-%S",time.localtime())}_log',encoding="utf‐8")
#添加处理器
logger.addHandler(console)
logger.addHandler(console1)
#设置处理器格式
console.setFormatter(format_handler)
console1.setFormatter(format_handler)
#定义一个过滤器-过滤日志名为abc的日志,即名字不为abc的 不打印日志
flt = logging.Filter('abc')
#文件处理器添加过滤器
console.addFilter(flt)
console1.addFilter(flt)
#打印日志
logger.error("这是一个错误信息")
logger.warning("这是一个warning信息")
logger.info("这是一个info信息")
logger.critical("这是一个critical信息")
logger.debug("这是一个debug信息")
实现日志的封装
import time
def getlog():
#创建一个日志器
logger=logging.getLogger('logger')
#设置日志的输出最低级别 默认输出最低级别是warning
logger.setLevel(logging.INFO)
#如果没有处理器才会添加处理器,这样避免重复调用处理器
if not logger.handlers:
#创建一个处理器handler 文件进行日志输出
console=logging.StreamHandler()
console1=logging.FileHandler(filename=f'{time.strftime("%Y_%m_%d_%H_%M_%S",time.localtime())}_log',encoding="utf-8")
#创建一个格式器(包含数据(时间 +文件名+错误信息+错误等级),并制定格式)
formater=logging.Formatter(fmt='%(asctime)s %(levelname)s - %(name)s - %(filename)s (%(lineno)d): %(message)s'
,datefmt='%Y-%m-%d %H:%M:%S')
logger.addHandler(fh)
logger.addHandler(sh)
console.setFormatter(formater)
console1.setFormatter(formater)
#定义一个过滤器-过滤日志名为abc的日志,即名字不为abc的 不打印日志
flt = logging.Filter('abc')
#文件处理器添加过滤器
console.addFilter(flt)
console1.addFilter(flt)
return logger
getlog().info("这是错误1")
getlog().error("这是错误2")
通过配置文件的方式来处理日志
新建一个配置文件 logging.conf
配置文件内容如下:
[loggers]
keys=root,applog
[handlers]
keys=fileHandler,consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_applog]
level=DEBUG
handlers=fileHandler,consoleHandler
qualname=applog
propagate=0
[handler_consoleHandler]
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter
[handler_fileHandler]
class=handlers.TimedRotatingFileHandler
args=('applog.log', 'midnight',1,0)
level=DEBUG
formatter=simpleFormatter
[formatter_simpleFormatter]
format=%(asctime)s|%(levelname)8s|%(name)s|%(filename)s[:%(lineno)d]|%(message)s
datefmt=%Y-%m-%d %H:%M:%S
使用配置文件处理日志的代码如下:
import logging
import logging.config
#加载配置文件
logging.config.fileConfig('logging.conf')
#定义一个日志对象名为root的日志处理器
rootLogger = logging.getLogger()
rootLogger.debug("This is root Logger, debug")
#定义一个日志对象名为applog的日志处理器
logger = logging.getLogger('applog')
logger.debug("This is applog, debug")
a = 'abc'
try:
int(a)
except Exception as e:
# logger.error(e)
#打印完整的报错信息
logger.exception(e)
欢迎各学友点赞、收藏、加关注,本人将持续更新python相关内容。
上一篇: 一些算法题
下一篇: python3应用实例