mirror of
https://github.com/Genshin-bots/gsuid_core.git
synced 2025-05-12 06:55:49 +08:00
🎨 优化日志显示
This commit is contained in:
parent
95e0b65856
commit
9cf7c4b997
1
.gitignore
vendored
1
.gitignore
vendored
@ -668,3 +668,4 @@ GsData.db
|
||||
GenshinUID
|
||||
data
|
||||
plugins
|
||||
logs
|
||||
|
@ -56,12 +56,8 @@ class _Bot:
|
||||
async def _process(self):
|
||||
while True:
|
||||
data = await self.queue.get()
|
||||
task = asyncio.create_task(data)
|
||||
self.bg_tasks.add(task)
|
||||
try:
|
||||
task.add_done_callback(lambda _: self.bg_tasks.discard(task))
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
asyncio.create_task(data)
|
||||
self.queue.task_done()
|
||||
|
||||
|
||||
class Bot:
|
||||
|
@ -34,17 +34,22 @@ class GsClient:
|
||||
async def send_msg(self):
|
||||
while True:
|
||||
intent = await self._input()
|
||||
if intent == '全匹配测试':
|
||||
user_id = '55551111'
|
||||
if intent == '图片测试':
|
||||
content = [
|
||||
Message(
|
||||
type='file',
|
||||
data='xxx.json|XAclpWfLF5d66dtrHx8cqq8E+',
|
||||
)
|
||||
]
|
||||
else:
|
||||
user_id = '51'
|
||||
content = [Message(type='text', data=intent)]
|
||||
msg = MessageReceive(
|
||||
bot_id='Nonebot',
|
||||
user_type='direct',
|
||||
user_pm=2,
|
||||
group_id=None,
|
||||
user_id=user_id,
|
||||
content=[Message(type='text', data=intent)],
|
||||
user_id='51',
|
||||
content=content,
|
||||
)
|
||||
msg_send = msgjson.encode(msg)
|
||||
await self.ws.send(msg_send)
|
||||
|
@ -1,9 +1,16 @@
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
gs_data_path = Path(__file__).parents[1] / 'data'
|
||||
|
||||
|
||||
def get_res_path() -> Path:
|
||||
if not gs_data_path.exists():
|
||||
gs_data_path.mkdir()
|
||||
return gs_data_path
|
||||
def get_res_path(_path: Optional[str] = None) -> Path:
|
||||
if _path:
|
||||
path = gs_data_path / _path
|
||||
else:
|
||||
path = gs_data_path
|
||||
|
||||
if not path.exists():
|
||||
path.mkdir()
|
||||
|
||||
return path
|
||||
|
@ -65,7 +65,7 @@ async def handle_event(ws: _Bot, msg: MessageReceive):
|
||||
# 获取用户权限,越小越高
|
||||
user_pm = await get_user_pml(msg)
|
||||
event = await msg_process(msg)
|
||||
logger.info(f'[收到事件] {event}')
|
||||
logger.info('[收到事件]', event=event)
|
||||
valid_event: Dict[Trigger, int] = {}
|
||||
pending = [
|
||||
_check_command(
|
||||
|
@ -6,13 +6,15 @@ from typing import TYPE_CHECKING
|
||||
import loguru
|
||||
|
||||
from gsuid_core.config import core_config
|
||||
from gsuid_core.models import Event, Message
|
||||
from gsuid_core.data_store import get_res_path
|
||||
|
||||
if TYPE_CHECKING:
|
||||
# avoid sphinx autodoc resolve annotation failed
|
||||
# because loguru module do not have `Logger` class actually
|
||||
from loguru import Logger
|
||||
|
||||
logger: "Logger" = loguru.logger
|
||||
logger: 'Logger' = loguru.logger
|
||||
|
||||
|
||||
# https://loguru.readthedocs.io/en/stable/overview.html#entirely-compatible-with-standard-logging
|
||||
@ -33,23 +35,59 @@ class LoguruHandler(logging.Handler): # pragma: no cover
|
||||
)
|
||||
|
||||
|
||||
FORMAT = (
|
||||
"<g>{time:MM-DD HH:mm:ss}</g> "
|
||||
"[<lvl>{level}</lvl>] "
|
||||
"<c><u>{name}</u></c> | "
|
||||
# "<c>{function}:{line}</c>| "
|
||||
"{message}"
|
||||
)
|
||||
def format_event(record):
|
||||
if 'event' in record['extra']:
|
||||
event: Event = record['extra']['event']
|
||||
if event.file and event.file_type != 'url':
|
||||
file = f'{event.file[:20]}...(base64)'
|
||||
content = [Message('file', f'{event.file_name}|{file}')]
|
||||
else:
|
||||
file = event.file
|
||||
content = event.content
|
||||
message = (
|
||||
f'<m><b>[Event]</b></m> '
|
||||
f'raw_text={event.raw_text}, '
|
||||
f'command={event.command}, '
|
||||
f'text={event.text}, '
|
||||
f'image={event.image}, '
|
||||
f'at={event.at}, '
|
||||
f'image_list={event.image}, '
|
||||
f'at_list={event.at_list}, '
|
||||
f'is_tome={event.is_tome}, '
|
||||
f'reply={event.reply}, '
|
||||
f'file_name={event.file_name}, '
|
||||
f'file_type={event.file_type}, '
|
||||
f'file={file}'
|
||||
f' | <m><b>[Receive]</b></m> '
|
||||
f'bot_id={event.bot_id}, '
|
||||
f'bot_self_id={event.bot_self_id}, '
|
||||
f'msg_id={event.msg_id}, '
|
||||
f'user_type={event.user_type}, '
|
||||
f'group_id={event.group_id}, '
|
||||
f'user_id={event.user_id}, '
|
||||
f'user_pm={event.user_pm}, '
|
||||
f'content={content}, '
|
||||
)
|
||||
else:
|
||||
message = '{message}'
|
||||
|
||||
LEVEL: str = core_config.get_config("log").get("level", "INFO")
|
||||
time = '<g>{time:MM-DD HH:mm:ss}</g>'
|
||||
level = '[<lvl>{level}</lvl>]'
|
||||
def_name = '<c><u>{name}</u></c>'
|
||||
return f'{time} {level} {def_name} | {message} \n'
|
||||
|
||||
|
||||
LEVEL: str = core_config.get_config('log').get('level', 'INFO')
|
||||
|
||||
logger.remove()
|
||||
logger_id = logger.add(sys.stdout, level=LEVEL, diagnose=False, format=FORMAT)
|
||||
logger_id = logger.add(
|
||||
sys.stdout, level=LEVEL, diagnose=False, format=format_event
|
||||
)
|
||||
|
||||
logger.add(
|
||||
"logs/{time:YYYY-MM-DD}.log",
|
||||
sink=get_res_path() / 'logs/{time:YYYY-MM-DD}.log',
|
||||
format=format_event,
|
||||
rotation=datetime.time(),
|
||||
level=LEVEL,
|
||||
diagnose=False,
|
||||
format=FORMAT,
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user