rename old
This commit is contained in:
77
old_py12306/log/base.py
Normal file
77
old_py12306/log/base.py
Normal file
@@ -0,0 +1,77 @@
|
||||
import os
|
||||
import sys
|
||||
import io
|
||||
from contextlib import redirect_stdout
|
||||
|
||||
from py12306.config import Config
|
||||
from py12306.helpers.func import *
|
||||
|
||||
|
||||
class BaseLog:
|
||||
logs = []
|
||||
thread_logs = {}
|
||||
quick_log = []
|
||||
|
||||
@classmethod
|
||||
def add_log(cls, content=''):
|
||||
self = cls()
|
||||
# print('添加 Log 主进程{} 进程ID{}'.format(is_main_thread(), current_thread_id()))
|
||||
if is_main_thread():
|
||||
self.logs.append(content)
|
||||
else:
|
||||
tmp_log = self.thread_logs.get(current_thread_id(), [])
|
||||
tmp_log.append(content)
|
||||
self.thread_logs[current_thread_id()] = tmp_log
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
def flush(cls, sep='\n', end='\n', file=None, exit=False, publish=True):
|
||||
from py12306.cluster.cluster import Cluster
|
||||
self = cls()
|
||||
logs = self.get_logs()
|
||||
# 输出到文件
|
||||
if file == None and Config().OUT_PUT_LOG_TO_FILE_ENABLED and not Const.IS_TEST: # TODO 文件无法写入友好提示
|
||||
file = open(Config().OUT_PUT_LOG_TO_FILE_PATH, 'a', encoding='utf-8')
|
||||
if not file: file = None
|
||||
# 输出日志到各个节点
|
||||
if publish and self.quick_log and Config().is_cluster_enabled() and Cluster().is_ready: #
|
||||
f = io.StringIO()
|
||||
with redirect_stdout(f):
|
||||
print(*logs, sep=sep, end='' if end == '\n' else end)
|
||||
out = f.getvalue()
|
||||
Cluster().publish_log_message(out)
|
||||
else:
|
||||
print(*logs, sep=sep, end=end, file=file)
|
||||
self.empty_logs(logs)
|
||||
if exit: sys.exit()
|
||||
|
||||
def get_logs(self):
|
||||
if self.quick_log:
|
||||
logs = self.quick_log
|
||||
else:
|
||||
if is_main_thread():
|
||||
logs = self.logs
|
||||
else:
|
||||
logs = self.thread_logs.get(current_thread_id())
|
||||
return logs
|
||||
|
||||
def empty_logs(self, logs=None):
|
||||
if self.quick_log:
|
||||
self.quick_log = []
|
||||
else:
|
||||
if is_main_thread():
|
||||
self.logs = []
|
||||
else:
|
||||
if logs and self.thread_logs.get(current_thread_id()): del self.thread_logs[current_thread_id()]
|
||||
|
||||
@classmethod
|
||||
def add_quick_log(cls, content=''):
|
||||
self = cls()
|
||||
self.quick_log.append(content)
|
||||
return self
|
||||
|
||||
def notification(self, title, content=''):
|
||||
# if sys.platform == 'darwin': # 不太友好 先关闭,之前没考虑到 mac 下会请求权限
|
||||
# os.system( 'osascript -e \'tell app "System Events" to display notification "{content}" with title "{title}"\''.format(
|
||||
# title=title, content=content))
|
||||
pass
|
||||
Reference in New Issue
Block a user