Python使用logging模块实现日志记录实例
程序员文章站
2022-03-27 12:56:58
logging模块简介logging模块是Python的一个标准库模块,开发过程中,可以通过该模块,灵活的完成日志的记录。logging模块提供了两种记录日志的方式:1)使用logging提供的模块级别的函数(logging.basicConfig,logging.debug,logging.info…)2)使用logging模块的组件(loggers,handlers,filters,formatters)Python logging日志级别表 1 Python logging日志级别...
logging模块简介
logging模块是Python的一个标准库模块,开发过程中,可以通过该模块,灵活的完成日志的记录。
logging模块提供了两种记录日志的方式:
1)使用logging提供的模块级别的函数(logging.basicConfig,logging.debug,logging.info…)
2)使用logging模块的组件(loggers,handlers,filters,formatters)
Python logging日志级别
级别 | 对应的函数 | 描述 |
---|---|---|
DEBUG | logging.debug() | 最低级别,用于小细节,通常只有在诊断问题时,才会关心这些消息。 |
INFO | logging.info() | 用于记录程序中一般事件的信息,或确认一切工作正常。 |
WARNING | logging.warning() | 用于表示可能的问题,它不会阻止程序的工作,但将来可能会。 |
ERROR | logging.error() | 用于记录错误,它导致程序做某事失败。 |
CRITICAL | logging.critical() | *别,用于表示致命的错误,它导致或将要导致程序完全停止工作。 |
实例
import logging
from logging.handlers import TimedRotatingFileHandler
class RecordLogs:
def __init__(self, log_name, level=20, log_format="%(asctime)s,%(msecs)d %(name)s:%(levelname)s: [%(module)s(%(lineno)d)] %(message)s",
date_format="%Y-%m-%d %H:%M:%S", console_print=True, log_file=None, when=None):
self.log_name = log_name
self.level = level
self.log_format = log_format
self.date_format = date_format
self.console_print = console_print
self.log_file = log_file
self.when = when
def print(self):
# avoid duplicate printing
if not self.console_print and not self.log_file:
print("Error: Save log in file, but input not log file!")
return
log_dict = logging.Logger.manager.loggerDict
print_flag = True if self.log_name not in log_dict else False
when = None if self.when not in ["S", "M", "H", "D", "midnight"] else self.when
if not print_flag:
return
# create logger
logger = logging.getLogger(self.log_name)
logger.setLevel(self.level)
formatter = logging.Formatter(self.log_format, self.date_format)
if self.console_print:
# create handler,output log to console
log_sh = logging.StreamHandler()
log_sh.setFormatter(formatter)
# logger add handler
logger.addHandler(log_sh)
if self.log_file:
if when:
logHandler = TimedRotatingFileHandler(self.log_file, when=when)
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
else:
fh = logging.FileHandler(self.log_file)
fh.setFormatter(formatter)
# logger add handler
logger.addHandler(fh)
return logger
if __name__ == "__main__":
import time
test_log = RecordLogs("log_test", console_print=True, log_file="C:/Users/user/Desktop/test.log", when=None, level=10).print()
while True:
test_log.info("info logger")
test_log.error("error logger")
test_log.warning("warning logger")
test_log.debug("debug logger")
time.sleep(10)
结果:
总结:
通过该模块针对程序运行过程中打印的日志,尤其是记录错误的信息,对排错直观重要,不然每次都得手动执行程序再次复现,非常的麻烦!
本文地址:https://blog.csdn.net/Lin_Hv/article/details/107663564
上一篇: 知乎这种推广效果有多好?
下一篇: 计算最长公共前缀
推荐阅读
-
python标准日志模块logging的使用方法
-
python日志logging模块使用方法分析
-
Python使用logging结合decorator模式实现优化日志输出的方法
-
Python使用logging模块实现打印log到指定文件的方法
-
Python开发之日志记录模块:logging
-
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
-
python自定义logging模块,实现颜色控制、同时输出到控制台和日志文件中
-
python-logging模块的简单使用:如何同时输出到控制台和本地日志文件
-
Python中使用logging模块打印log日志详解
-
详解Python中logging日志模块在多进程环境下的使用