Python中使用Logging模块进行调试和日志记录
程序员文章站
2022-05-30 22:41:30
可以移植到任何项目的Logging模块,使用起来超爽,要不要来试试~...
在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习。我的使命就是过滤掉大量的垃圾信息,将知识体系化,以短平快的方式直达问题本质,把大家从大海捞针的痛苦中解脱出来。
1 使用原因
使用Logging模块相较于print的优势如下:
(1) 可以记录文件并且同时打印控制台。
(2) 可以使用5种打印等级:critical、error、warning、info、debug。
(3) 方便统一格式,比如打印时间戳、文件名、代码行、打印等级等。
(4) Logging模块自身已经实现单例模式,而且禁止二次打开,安全性更高。
2 使用方法
2.1 源码
闲言少絮,先上源码。
# -*- coding: utf-8 -*-
# ~ #----------------------------------------------------------------------
# file name: path.py
# function: define log output format etc. with logging module
# author: albert
# data: 2020/07/05
############################################################################
# 包含外部模块
#
import sys
import os
import logging
############################################################################
# 功能实现
#
# creat file path
curFileDir = os.path.dirname(__file__) #获取当前类所在文件路径
fileDir = os.path.abspath(os.path.join(curFileDir,"../")) #相对路径转绝对路径
sys.path.append(curFileDir) #添加本文件夹路径到系统路径
# config parameters
log_name = fileDir + "/my_log.log"
log_level = logging.DEBUG
log_format = " [%(asctime)s - %(filename)s(%(lineno)s) - %(levelname)s] - %(message)s"
# config console
console_handler = logging.StreamHandler(sys.stderr)
console_handler.setLevel(log_level)
console_handler.setFormatter(logging.Formatter(log_format))
# config log file
file_handler = logging.FileHandler(log_name)
file_handler.setLevel(log_level)
file_handler.setFormatter(logging.Formatter(log_format))
# create log object
log = logging.getLogger("mylogger")
log.setLevel(log_level)
log.addHandler(console_handler)
log.addHandler(file_handler)
############################################################################
# 调试代码
#
if __name__ == "__main__":
log.error("hello world ")
log.error("hello %d world " % 3)
log.debug("hello {} world {}".format((1,3,4), "hello %d times" % 3))
2.2 说明
(1)上述源码封装到一个.py文件中,被其他.py文件import之后就可以仿照调试代码那样使用。
(2)上述源码实现了下述功能:
-
输出内容既可以打印到控制台,又可以输出到log文件。
-
输出格式中包括运行时间、文件名、代码行号、打印等级和用户输出内容。
-
源码中log_level使用了三次,其实三个地方可以使用不同级别,自己可以尝试。
<完>
本文地址:https://blog.csdn.net/weixin_44873133/article/details/107141003
下一篇: 分批读取训练数据进行训练
推荐阅读
-
python自定义logging模块,实现颜色控制、同时输出到控制台和日志文件中
-
python-logging模块的简单使用:如何同时输出到控制台和本地日志文件
-
详解Python中logging日志模块在多进程环境下的使用
-
Python 中 对logging 模块进行封装,记录bug日志、日志等级
-
Python中使用Logging模块进行调试和日志记录
-
Python中使用logging和traceback模块记录日志和跟踪异常
-
详解Python中logging日志模块在多进程环境下的使用
-
详解Python中logging日志模块在多进程环境下的使用
-
Python使用logging模块实现日志记录实例
-
详解Python中logging日志模块在多进程环境下的使用