笔者使用python脚本主要是把工作中的一些重复性劳动自动化处理,所以大多在自己本地的PyCharm上跑,有问题console打出来就好了。但是随着工具脚本部署到服务器给部门提供服务,就需要有日志进行留痕和问题定位了。所以将第三方库logging
简单封装一下,在工程中方便调用。先上效果~
调用代码
封装的日志接口在logger.py
,封装了4种日志接口(info
,debug
,warning
,error
),具体调用方法如下。
import logger
TAG = "TEST"
logger.log_i(TAG, "something want to write")
logger.log_d(TAG, "something want to debug")
日志文件输出效果
2023-06-23 16:41:12,640 INFO:[TEST]something want to write
2023-06-23 16:41:12,640 DEBUG:[TEST]something want to debug
控制台输出效果
2023-06-23 16:41:12,640 INFO:[TEST]something want to write
2023-06-23 16:41:12,640 DEBUG:[TEST]something want to debug
logger源码
很简单,就是将logging
引入后进行日志文件名、格式等设置。其中为了方便在PyCharm上调试,增加了控制台输出,实际工具部署后,可以考虑删掉节省io输出成本。
import logging
# 设置日志输出级别为DEBUG
LOG_LEVEL = logging.DEBUG
# 构造日志打印对象
logger = logging.getLogger(__name__)
logger.setLevel(level=LOG_LEVEL)
# 定义日志打印格式 2023-06-23 16:41:12,640 INFO:message
formatter = logging.Formatter('%(asctime)s %(levelname)s:%(message)s')
# 日志文件打印
# 定义日志名称,有需要按日期打印的可以增加时间戳
handler = logging.FileHandler("log.log")
handler.setLevel(level=LOG_LEVEL)
handler.setFormatter(formatter)
logger.addHandler(handler)
# 控制台打印
# 部署服务可以考虑将该部分代码废弃
console = logging.StreamHandler()
console.setLevel(level=LOG_LEVEL)
console.setFormatter(formatter)
logger.addHandler(console)
def log_i(tag, msg):
logger.info("[{}]{}".format(tag, msg))
def log_d(tag, msg):
logger.debug("[{}]{}".format(tag, msg))
def log_w(tag, msg):
logger.warning("[{}]{}".format(tag, msg))
def log_e(tag, msg):
logger.error("[{}]{}".format(tag, msg))