refactor: 重构日志系统并优化线程池配置
重构日志系统,使用loguru替代print语句,提升日志管理能力。优化线程池配置,根据CPU核心数动态设置线程池大小。将任务执行逻辑移至worker.py,提高代码可维护性。
This commit is contained in:
parent
8e7dd21839
commit
7a19ca02bf
@ -1,15 +1,21 @@
|
|||||||
from reloading import reloading
|
from loguru import logger
|
||||||
|
|
||||||
|
logger.add("log/console.log",
|
||||||
|
rotation="100 MB",
|
||||||
|
encoding="utf-8",
|
||||||
|
filter=lambda record: record["extra"].get("name") == "console")
|
||||||
|
|
||||||
|
console_log = logger.bind(name="console")
|
||||||
|
|
||||||
def console_listener(tab):
|
def console_listener(tab):
|
||||||
try:
|
try:
|
||||||
# 监听控制台
|
# 监听控制台
|
||||||
print("[console.log] 开始监听控制台")
|
console_log.info("[console.log] 开始监听控制台")
|
||||||
tab.console.start()
|
tab.console.start()
|
||||||
steps = tab.console.steps()
|
steps = tab.console.steps()
|
||||||
for log in steps:
|
for log in steps:
|
||||||
# print("[console.log]", log)
|
# print("[console.log]", log)
|
||||||
print(f"[console.log] {log.text}")
|
console_log.info(f"[console.log] {log.text}")
|
||||||
finally:
|
finally:
|
||||||
print("[console.log] 停止监听控制台")
|
console_log.info("[console.log] 停止监听控制台")
|
||||||
tab.console.stop()
|
tab.console.stop()
|
@ -1,36 +1,47 @@
|
|||||||
import utils
|
import utils
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
def network_listener(tab):
|
logger.add("log/network.log",
|
||||||
|
rotation="100 MB",
|
||||||
|
encoding="utf-8",
|
||||||
|
filter=lambda record: record["extra"].get("name") == "network")
|
||||||
|
|
||||||
|
network_log = logger.bind(name="network")
|
||||||
|
|
||||||
|
def network_listener(tab, targets=[]):
|
||||||
try:
|
try:
|
||||||
# 监听网络
|
# 监听网络
|
||||||
print("[network.log] 开始监听网络")
|
network_log.info("[network.log] 开始监听网络")
|
||||||
tab.listen.start(targets=["/api/"])
|
tab.listen.start(targets=targets)
|
||||||
for log in tab.listen.steps():
|
for log in tab.listen.steps():
|
||||||
print("=" * 50)
|
network_log.info("=" * 50)
|
||||||
print(f"[network.log] {log.method} {log.url} {'request'} {''}")
|
network_log.info(f"[network.log] {log.method} {log.url}")
|
||||||
print("=" * 50 + '\t' + "request")
|
network_log.info("=" * 50 + '\t' + "request")
|
||||||
print("=" * 50 + '\t' + "request.headers")
|
network_log.info("=" * 50 + '\t' + "request.headers")
|
||||||
for key in log.request.headers.keys():
|
for key in log.request.headers.keys():
|
||||||
print(key, log.request.headers[key])
|
network_log.info("{}, {}", key, log.request.headers[key])
|
||||||
|
|
||||||
if 'Content-Type' in log.request.headers:
|
if 'Content-Type' in log.request.headers:
|
||||||
reqType = log.request.headers['Content-Type']
|
reqType = log.request.headers['Content-Type']
|
||||||
if reqType == 'application/json':
|
if reqType == 'application/json':
|
||||||
print("=" * 50 + '\t' + "request.body")
|
network_log.info("=" * 50 + '\t' + "request.body")
|
||||||
print(utils.format_json(log.request.body))
|
network_log.info(utils.format_json(log.request.body))
|
||||||
|
|
||||||
print(vars(log.request))
|
# print(vars(log.request))
|
||||||
|
|
||||||
|
for key in log.response.headers.keys():
|
||||||
|
network_log.info("{}, {}", key, log.response.headers[key])
|
||||||
|
|
||||||
if 'Content-Type' in log.response.headers:
|
if 'Content-Type' in log.response.headers:
|
||||||
respType = log.response.headers['Content-Type']
|
respType = log.response.headers['Content-Type']
|
||||||
if respType == 'application/json':
|
if respType == 'application/json':
|
||||||
print("=" * 50 + '\t' + "response.body")
|
network_log.info("=" * 50 + '\t' + "response.body")
|
||||||
print(utils.format_json(log.response.body))
|
network_log.info(utils.format_json(log.response.body))
|
||||||
|
|
||||||
print(vars(log.response))
|
# print(vars(log.response))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("[network.log] 监听网络出错")
|
network_log.error("[network.log] 监听网络出错")
|
||||||
print(e)
|
network_log.error(e)
|
||||||
finally:
|
finally:
|
||||||
print("[network.log] 停止监听网络")
|
network_log.info("[network.log] 停止监听网络")
|
||||||
tab.listen.stop()
|
tab.listen.stop()
|
49
main.py
49
main.py
@ -1,3 +1,17 @@
|
|||||||
|
from loguru import logger
|
||||||
|
logger.remove()
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
logger.add(sys.stdout,
|
||||||
|
filter=lambda record: record["extra"].get("name") == "runtime")
|
||||||
|
logger.add("log/runtime.log",
|
||||||
|
rotation="100 MB",
|
||||||
|
encoding="utf-8",
|
||||||
|
filter=lambda record: record["extra"].get("name") == "runtime")
|
||||||
|
|
||||||
|
log = logger.bind(name="runtime")
|
||||||
|
|
||||||
from DrissionPage import Chromium, ChromiumOptions, SessionPage
|
from DrissionPage import Chromium, ChromiumOptions, SessionPage
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
import atexit
|
import atexit
|
||||||
@ -5,7 +19,7 @@ import atexit
|
|||||||
import listener.console
|
import listener.console
|
||||||
import listener.network
|
import listener.network
|
||||||
|
|
||||||
|
# 初始化浏览器
|
||||||
options = ChromiumOptions()
|
options = ChromiumOptions()
|
||||||
# 无头模式
|
# 无头模式
|
||||||
# options.headless()
|
# options.headless()
|
||||||
@ -17,30 +31,23 @@ print(os.environ)
|
|||||||
browser = Chromium(options)
|
browser = Chromium(options)
|
||||||
tab = browser.latest_tab
|
tab = browser.latest_tab
|
||||||
|
|
||||||
executor = ThreadPoolExecutor(max_workers=2)
|
import os
|
||||||
|
# 初始化线程池
|
||||||
|
cpu_count = os.cpu_count()
|
||||||
|
cpu_count = cpu_count if cpu_count is not None else 1
|
||||||
|
executor = ThreadPoolExecutor(max_workers=cpu_count * 2)
|
||||||
executor.submit(listener.console.console_listener, tab)
|
executor.submit(listener.console.console_listener, tab)
|
||||||
executor.submit(listener.network.network_listener, tab)
|
executor.submit(listener.network.network_listener, tab)
|
||||||
|
|
||||||
|
|
||||||
tab.get(url='http://127.0.0.1:24613')
|
|
||||||
|
|
||||||
tab.wait.url_change(text="/auth/login", timeout=3, raise_err=False)
|
|
||||||
|
|
||||||
if tab.url.endswith("/auth/login"):
|
|
||||||
tab.wait.doc_loaded()
|
|
||||||
tab.actions.move_to("@@t()=input@@type=text").click().type("shikong")
|
|
||||||
tab.actions.move_to("@@t()=input@@type=password").click().type("123+AbC")
|
|
||||||
tab.actions.move_to("@@t()=button@@text():登录").click()
|
|
||||||
|
|
||||||
tab.change_mode()
|
|
||||||
|
|
||||||
items = tab.eles("t:body")
|
|
||||||
for item in items:
|
|
||||||
print(item)
|
|
||||||
|
|
||||||
def exit():
|
def exit():
|
||||||
print('exit')
|
log.info('退出')
|
||||||
browser.quit()
|
browser.quit()
|
||||||
executor.shutdown()
|
executor.shutdown(False)
|
||||||
|
|
||||||
atexit.register(exit)
|
atexit.register(exit)
|
||||||
|
|
||||||
|
from worker import run_task;
|
||||||
|
try:
|
||||||
|
run_task(browser, executor, log)
|
||||||
|
except Exception as e:
|
||||||
|
log.error(e)
|
27
worker.py
Normal file
27
worker.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
from listener.console import *
|
||||||
|
from listener.network import *
|
||||||
|
|
||||||
|
def run_task(browser, executor, log):
|
||||||
|
tab = browser.latest_tab
|
||||||
|
|
||||||
|
executor.submit(console_listener, tab)
|
||||||
|
executor.submit(network_listener, tab, targets=[
|
||||||
|
"/api"
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
tab.get(url='http://127.0.0.1:24613')
|
||||||
|
|
||||||
|
tab.wait.url_change(text="/auth/login", timeout=3, raise_err=False)
|
||||||
|
|
||||||
|
if tab.url.endswith("/auth/login"):
|
||||||
|
tab.wait.doc_loaded()
|
||||||
|
tab.actions.move_to("@@t()=input@@type=text").click().type("shikong")
|
||||||
|
tab.actions.move_to("@@t()=input@@type=password").click().type("123+AbC")
|
||||||
|
tab.actions.move_to("@@t()=button@@text():登录").click()
|
||||||
|
|
||||||
|
# tab.change_mode()
|
||||||
|
|
||||||
|
items = tab.eles("t:body")
|
||||||
|
for item in items:
|
||||||
|
print(item)
|
Loading…
Reference in New Issue
Block a user