crypto_quant/core/logger.py

73 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()