73 lines
2.8 KiB
Python
73 lines
2.8 KiB
Python
import logging
|
||
import time
|
||
from logging.handlers import TimedRotatingFileHandler
|
||
import os
|
||
'''
|
||
日志工具类
|
||
'''
|
||
|
||
|
||
class Logger:
|
||
def __init__(self):
|
||
# log文件存储路径
|
||
current_dir = os.getcwd()
|
||
if current_dir.endswith('crypto_quant'):
|
||
output_folder = f'{current_dir}/output/log/'
|
||
elif current_dir.endswith(r'python_projects'):
|
||
output_folder = f'{current_dir}/crypto_quant/output/log/'
|
||
else:
|
||
output_folder = f'{current_dir}/output/log/'
|
||
os.makedirs(output_folder, exist_ok=True)
|
||
# add self._log_filename to be adata_yyyyMMddHHmm.log
|
||
self._log_filename = os.path.join(output_folder, 'crypto_monitor_{}.log'.format(time.strftime("%Y%m%d%H%M%S", time.localtime())))
|
||
|
||
# self._log_filename = os.path.join(output_folder, 'adata.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: 打印日志信息
|
||
'''
|
||
logging.basicConfig()
|
||
# 日志信息输出格式
|
||
self._formatter = logging.Formatter('%(asctime)s - %(process)d - %(levelname)s: %(message)s',
|
||
datefmt='%Y-%m-%d %H:%M:%S')
|
||
# 创建一个日志对象
|
||
self._logger = logging.getLogger()
|
||
# self.set_console_logger()
|
||
self.set_file_logger()
|
||
self._logger.setLevel(logging.INFO)
|
||
|
||
def set_console_logger(self):
|
||
'''设置控制台日志输出'''
|
||
console_handler = logging.StreamHandler()
|
||
console_handler.setFormatter(self._formatter)
|
||
console_handler.setLevel(logging.INFO)
|
||
self._logger.addHandler(console_handler)
|
||
|
||
def set_file_logger(self):
|
||
'''设置日志文件输出'''
|
||
log_file_handler = TimedRotatingFileHandler(filename=self._log_filename,
|
||
when="D",
|
||
interval=1,
|
||
backupCount=3,
|
||
encoding='utf-8')
|
||
log_file_handler.setFormatter(self._formatter)
|
||
log_file_handler.setLevel(logging.INFO)
|
||
# log_file_handler.suffix = "%Y%m%d_%H%M%S.log"
|
||
self._logger.addHandler(log_file_handler)
|
||
|
||
def get_logger(self):
|
||
return self._logger
|
||
|
||
|
||
logger = Logger().get_logger()
|