2023-03-28 15:43:44 +08:00
|
|
|
|
#!/usr/bin/python
|
|
|
|
|
import logging
|
|
|
|
|
import logging.handlers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
日志工具类
|
|
|
|
|
'''
|
|
|
|
|
class Logging:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
# log文件存储路径
|
|
|
|
|
self._log_filename = 'bot.log'
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
%(levelno)s: 打印日志级别的数值
|
|
|
|
|
%(levelname)s: 打印日志级别名称
|
|
|
|
|
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
|
|
|
|
|
%(filename)s: 打印当前执行程序名
|
|
|
|
|
%(funcName)s: 打印日志的当前函数
|
|
|
|
|
%(lineno)d: 打印日志的当前行号
|
|
|
|
|
%(asctime)s: 打印日志的时间
|
|
|
|
|
%(thread)d: 打印线程ID
|
|
|
|
|
%(threadName)s: 打印线程名称
|
|
|
|
|
%(process)d: 打印进程ID
|
|
|
|
|
%(message)s: 打印日志信息
|
|
|
|
|
'''
|
|
|
|
|
# 日志信息输出格式
|
|
|
|
|
self._formatter = logging.Formatter('%(asctime)s - %(process)d - '
|
|
|
|
|
'%(pathname)s - %(levelname)s: %(message)s')
|
|
|
|
|
# 创建一个日志对象
|
|
|
|
|
self._logger = logging.getLogger()
|
|
|
|
|
# 设置控制台日志的输出级别: 级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
|
|
|
|
|
self._logger.setLevel(logging.INFO) # 大于info级别的日志信息都会被输出
|
|
|
|
|
self.set_console_logger()
|
|
|
|
|
self.set_file_logger()
|
|
|
|
|
|
|
|
|
|
def set_console_logger(self):
|
|
|
|
|
'''设置控制台日志输出'''
|
2023-12-07 10:10:01 +08:00
|
|
|
|
console_handler = logging.StreamHandler() #创建一个StreamHandler对象
|
|
|
|
|
console_handler.setFormatter(self._formatter) #使用之前定义的日志格式
|
|
|
|
|
self._logger.addHandler(console_handler) #将控制台日志处理器添加到日志对象中
|
2023-03-28 15:43:44 +08:00
|
|
|
|
|
|
|
|
|
def set_file_logger(self):
|
|
|
|
|
'''设置日志文件输出'''
|
|
|
|
|
formatter = logging.Formatter('%(asctime)s - %(process)d - '
|
|
|
|
|
'%(pathname)s - %(levelname)s: %(message)s')
|
|
|
|
|
# 将输出日志信息保存到文件中
|
|
|
|
|
file_handler = logging.handlers.RotatingFileHandler(
|
2023-12-07 10:10:01 +08:00
|
|
|
|
self._log_filename, maxBytes=10485760, backupCount=5, encoding="utf-8") #文件最大大小为10MB,若超过就自动创建新的日志文件;保留文件数为5个,超过后删除最旧的
|
2023-03-28 15:43:44 +08:00
|
|
|
|
file_handler.setFormatter(self._formatter)
|
|
|
|
|
self._logger.addHandler(file_handler)
|
|
|
|
|
|
|
|
|
|
def get_logger(self):
|
2023-12-07 10:10:01 +08:00
|
|
|
|
return self._logger #获取日志记录对象,获取已设置好的日志记录器对象,用来记录日志信息
|
2023-03-28 15:43:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
logger = Logging().get_logger()
|