前言——日志的部分
一、什么是日志?
日志,对于运维人员来说是非常重要的,也是我们时常需要关注的对象,对于一些服务的运行,通过查看服务的日志文件就可以得知其具体的运行情况,进行相应的措施。最直接的体现就是,通过查看服务的警告日志,得知某部分出现错误,若不及时修改,会到时服务宕掉,及时将其修改了,就避免了服务崩溃,能够继续正常运行。
二、代码部分
import os
import logging
from logging.handlers import TimedRotatingFileHandler
import getpathInfo
path = getpathInfo.get_Path()
log_path = os.path.join(path, 'result') # 存放log文件的路径
#第一步:
# 创建一个日志收集器:logging.getLogger("收集器的名字")
#
# 第二步:
# 给日志收集器,设置日志级别:logger.setLevel(logging.INFO)
#
# 第三步:
# 给日志收集器,创建一个输出渠道。handle1 = logging.StreamHandler()
#
# 第四步:
# 给渠道,设置一个日志输出内容的格式。
#
# 第五步:
# 将设置的格式,绑定到渠道当中。将格式与渠道关联起来。
#
# 第六步:
# 将设置好的渠道,添加到日志收集器上。
class Logger(object):
def __init__(self, logger_name='logs…'):
self.logger = logging.getLogger(logger_name)
logging.root.setLevel(logging.NOTSET)
self.log_file_name = 'logs' # 日志文件的名称
self.backup_count = 5 # 最多存放日志的数量
# 日志输出级别
self.console_output_level = 'WARNING'
self.file_output_level = 'DEBUG'
# 日志输出格式
self.formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
def get_logger(self):
"""在logger中添加日志句柄并返回,如果logger已有句柄,则直接返回"""
if not self.logger.handlers: # 避免重复日志
console_handler = logging.StreamHandler()
console_handler.setFormatter(self.formatter)
console_handler.setLevel(self.console_output_level)
self.logger.addHandler(console_handler)
# 每天重新创建一个日志文件,最多保留backup_count份
file_handler = TimedRotatingFileHandler(filename=os.path.join(log_path, self.log_file_name), when='D',
interval=1, backupCount=self.backup_count, delay=True,
encoding='utf-8')
file_handler.setFormatter(self.formatter)
file_handler.setLevel(self.file_output_level)
self.logger.addHandler(file_handler)
return self.logger
logger = Logger().get_logger()
总结
以上就是本次的讲解,如果大家有什么其他的想法可以一起学习,感谢…