Skip to content

Commit f91a9e0

Browse files
committed
update: 添加日志功能
1 parent 5a7b0f8 commit f91a9e0

File tree

9 files changed

+294
-278
lines changed

9 files changed

+294
-278
lines changed

config/logging_config.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
日志配置
33
"""
44
log_config = {
5-
"version": 1.0,
5+
"version": 1,
66
"formatters": {
7-
"standard_out": {
7+
"simplify_output": {
88
"format": "%(message)s"
99
},
10-
"standard_file": {
10+
"full_output": {
1111
"format": "[%(asctime)s] MEG.%(levelname)s: (%(module)s) >>> %(message)s",
1212
"datefmt": "%Y-%m-%d %H:%M:%S %z"
1313
}
@@ -17,27 +17,42 @@
1717
"standard_console": {
1818
"class": "logging.StreamHandler",
1919
"level": "DEBUG",
20-
"formatter": "standard_out"
20+
"formatter": "simplify_output"
2121
},
2222
"standard_file": {
2323
"class": "logging.handlers.TimedRotatingFileHandler",
24-
"level": "INFO",
25-
"formatter": "standard_file",
24+
"level": "DEBUG",
25+
"formatter": "full_output",
2626
"filename": "log/default_log.log",
2727
"when": 'D',
2828
"interval": 1,
2929
"backupCount": 5,
3030
"encoding": "utf-8"
31+
},
32+
"debug_console": {
33+
"class": "logging.StreamHandler",
34+
"level": "DEBUG",
35+
"formatter": "full_output"
3136
}
3237
},
3338
"loggers": {
34-
"standard_logger": {
39+
"info_file_logger": {
3540
"handlers": ["standard_console", "standard_file"],
3641
"level": "INFO",
3742
"propagate": False
3843
},
39-
"debug_logger": {
44+
"debug_file_logger": {
45+
"handlers": ["standard_console", "standard_file"],
46+
"level": "DEBUG",
47+
"propagate": False
48+
},
49+
"info_console_logger": {
4050
"handlers": ["standard_console"],
51+
"level": "INFO",
52+
"propagate": False
53+
},
54+
"debug_console_logger": {
55+
"handlers": ["debug_console"],
4156
"level": "DEBUG",
4257
"propagate": False
4358
}

main.py

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import time
99
from getpass import getuser
1010

11-
import myseg.global_var as gl
1211
from myseg import async_input, check_update, init_config, info_menu, init_exchange, wait_tasks
1312
from myseg import check_cookie, update_cookie
13+
from myseg import global_var as gl, logger
1414

1515
MAIN_VERSION = '3.0.0'
1616
MESSAGE = f"""\
@@ -30,39 +30,40 @@ async def check_all_cookie():
3030
检查所有cookie是否有效
3131
"""
3232
try:
33-
if not gl.USER_DICT or not gl.INI_CONFIG.getboolean('update_setting', 'check_account_enable'):
33+
if not gl.user_dict or not gl.init_config.getboolean('update_setting', 'check_account_enable'):
3434
return True
35-
print("检查所有cookie是否有效...")
35+
logger.info("检查所有cookie是否有效...")
3636
expires_account = []
37-
for account in gl.USER_DICT.values():
37+
for account in gl.user_dict.values():
3838
check_cookie_result = await check_cookie(account)
3939
if check_cookie_result == -1:
40-
print(f"账号: {account['mys_uid']} 检查失败")
40+
logger.info(f"账号: {account['mys_uid']} 检查失败")
4141
elif check_cookie_result == 0:
4242
expires_account.append(account)
4343
if expires_account:
44-
if gl.INI_CONFIG.getboolean('update_setting', 'update_account_enable'):
45-
print("检测到有账号cookie过期, 尝试自动更新cookie")
44+
if gl.init_config.getboolean('update_setting', 'update_account_enable'):
45+
logger.info("检测到有账号cookie过期, 尝试自动更新cookie")
4646
for account in expires_account:
4747
update_result = await update_cookie(account)
4848
if update_result:
49-
gl.USER_DICT[account.mys_uid].cookie = update_result
49+
gl.user_dict[account.mys_uid].cookie = update_result
5050
else:
51-
print(f"账号: {account.mys_uid} 更新cookie失败")
52-
print("自动更新cookie完成")
51+
logger.info(f"账号: {account.mys_uid} 更新cookie失败")
52+
logger.info("自动更新cookie完成")
5353
else:
5454
for account in expires_account:
55-
print(f"账号: {account.mys_uid} cookie已过期")
56-
print("自动更新已配置为关闭, 请手动更新cookie")
55+
logger.info(f"账号: {account.mys_uid} cookie已过期")
56+
logger.info("自动更新已配置为关闭, 请手动更新cookie")
5757
else:
58-
print("所有账号cookie有效")
58+
logger.info("所有账号cookie有效")
5959
input("按回车键继续")
6060
return True
6161
except KeyboardInterrupt:
62-
print("用户强制退出")
62+
logger.warning("用户强制退出")
63+
input("按回车键继续")
6364
sys.exit()
6465
except Exception as err:
65-
print(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
66+
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
6667
input("按回车键继续")
6768
return False
6869

@@ -73,10 +74,10 @@ async def main_menu():
7374
"""
7475
try:
7576
await check_all_cookie()
76-
print("初始化定时任务...")
77+
logger.info("初始化定时任务...")
7778
await init_exchange()
7879
while True:
79-
os.system(gl.CLEAR_TYPE)
80+
os.system(gl.clear_type)
8081
print("""主菜单
8182
选择功能:
8283
1. 获取信息
@@ -85,7 +86,7 @@ async def main_menu():
8586
4. 检查更新
8687
0. 退出""")
8788
select_function = await async_input("请输入选择功能的序号: ")
88-
os.system(gl.CLEAR_TYPE)
89+
os.system(gl.clear_type)
8990
if select_function == "1":
9091
await info_menu()
9192
elif select_function == "2":
@@ -102,10 +103,11 @@ async def main_menu():
102103
continue
103104
await async_input("按回车键继续")
104105
except KeyboardInterrupt:
105-
print("用户强制退出")
106+
logger.warning("用户强制退出")
107+
input("按回车键继续")
106108
sys.exit()
107109
except Exception as err:
108-
print(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
110+
logger.critical(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
109111
await async_input("按回车键继续")
110112
sys.exit()
111113

@@ -135,26 +137,28 @@ def start_info():
135137
print(f"{user_name},夜深了,花睡了,早些休息哦~")
136138
print(MESSAGE)
137139
except KeyboardInterrupt:
138-
print("用户强制退出")
140+
logger.warning("用户强制退出")
141+
input("按回车键继续")
139142
sys.exit()
140143
except Exception as err:
141-
print(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
144+
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
142145
input("按回车键继续")
143146
return False
144147

145148

146149
if __name__ == '__main__':
147150
try:
148-
init_config()
151+
init_config() # 需优化
149152
start_info()
150-
if gl.INI_CONFIG.getboolean("update_setting", "check_enable"):
153+
if gl.init_config.getboolean("update_setting", "check_enable"):
151154
asyncio.run(check_update(MAIN_VERSION))
152155
input("按回车键继续")
153156
asyncio.run(main_menu())
154157
except KeyboardInterrupt:
155-
print("用户强制退出")
158+
logger.warning("用户强制退出")
159+
input("按回车键继续")
156160
sys.exit()
157161
except Exception as main_err:
158-
print(f"运行出错, 错误为: {main_err}, 错误行数为: {main_err.__traceback__.tb_lineno}")
162+
logger.critical(f"运行出错, 错误为: {main_err}, 错误行数为: {main_err.__traceback__.tb_lineno}")
159163
input("按回车键继续")
160164
sys.exit()

myseg/__init__.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,55 @@
11
"""
22
初始化
33
"""
4+
import logging.config
5+
46
from apscheduler.events import EVENT_JOB_ADDED, EVENT_JOB_REMOVED, EVENT_JOB_MODIFIED, EVENT_JOB_MISSED, \
57
EVENT_JOB_ERROR, EVENT_JOB_EXECUTED
68
from apscheduler.schedulers.asyncio import AsyncIOScheduler
79

10+
from config import logging_config
11+
from .global_var import GlobalVar
12+
13+
14+
class Logger:
15+
"""
16+
日志
17+
"""
18+
19+
def __init__(self):
20+
# 自定义日志路径与名称
21+
log_path = global_var.basic_path / 'log' / 'meg_all.log'
22+
if not log_path.parent.exists():
23+
log_path.parent.mkdir(parents=True, exist_ok=True)
24+
logging_config.log_config['handlers']['standard_file']['filename'] = log_path
25+
logging.config.dictConfig(logging_config.log_config)
26+
self.logger = logging.getLogger('info_file_logger')
27+
828

929
def scheduler_log_listener(event):
1030
"""
1131
监听基础定时任务事件(此处事件只会输出到日志)
1232
"""
1333
try:
1434
if event.code == EVENT_JOB_ADDED:
15-
print(f"任务 {event.job_id} 已添加")
35+
logger.info(f"任务 {event.job_id} 已添加")
1636
elif event.code == EVENT_JOB_REMOVED:
17-
print(f"任务 {event.job_id} 已删除")
37+
logger.info(f"任务 {event.job_id} 已删除")
1838
elif event.code == EVENT_JOB_MODIFIED:
19-
print(f"任务 {event.job_id} 已修改")
39+
logger.info(f"任务 {event.job_id} 已修改")
2040
elif event.code == EVENT_JOB_MISSED:
21-
print(f"任务 {event.job_id} 已错过")
41+
logger.warning(f"任务 {event.job_id} 已错过")
2242
elif event.code == EVENT_JOB_ERROR:
23-
print(f"任务 {event.job_id} 运行出错, 错误为: {event.exception}")
43+
logger.error(f"任务 {event.job_id} 运行出错, 错误为: {event.exception}")
2444
elif event.code == EVENT_JOB_EXECUTED:
25-
print(f"任务 {event.job_id} 已执行")
45+
logger.info(f"任务 {event.job_id} 已执行")
2646
except Exception as err:
27-
print(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
47+
logger.error(f"运行出错, 错误为: {err}, 错误行数为: {err.__traceback__.tb_lineno}")
2848
return False
2949

3050

51+
global_var = GlobalVar()
52+
logger = Logger().logger
3153
scheduler = AsyncIOScheduler({'apscheduler.timezone': 'Asia/Shanghai'})
3254
scheduler.add_listener(scheduler_log_listener,
3355
EVENT_JOB_ADDED | EVENT_JOB_REMOVED | EVENT_JOB_MODIFIED | EVENT_JOB_MISSED | EVENT_JOB_EXECUTED)

0 commit comments

Comments
 (0)