Add log api

This commit is contained in:
shenjack 2023-06-17 00:06:39 +08:00
parent bf3e598369
commit d0ac5c06cf
7 changed files with 87 additions and 9 deletions

View File

@ -14,4 +14,15 @@ gitee: @shenjackyuanjie
# from Difficult_Rocket.api import screen, mod, exception # from Difficult_Rocket.api import screen, mod, exception
__all__ = ['screen', 'mod', 'exception'] __all__ = [
'exception',
# 错误类定义
'screen',
# screen api
'types',
# 类型定义
'mod',
# mod api
'log'
# log api
]

View File

@ -0,0 +1,16 @@
# -------------------------------
# Difficult Rocket
# Copyright © 2020-2023 by shenjackyuanjie 3695888@qq.com
# All rights reserved
# -------------------------------
from Difficult_Rocket.utils.log import (get_named_client_logger,
get_named_server_logger,
get_named_main_logger)
__all__ = [
'get_named_client_logger',
'get_named_server_logger',
'get_named_main_logger',
]

View File

@ -12,9 +12,9 @@ gitee: @shenjackyuanjie
""" """
# system function # system function
import warnings
from typing import Tuple, List, Optional, TypeVar, TYPE_CHECKING from typing import Tuple, List, Optional, TypeVar, TYPE_CHECKING
# from DR # from DR
if TYPE_CHECKING: if TYPE_CHECKING:
from Difficult_Rocket.main import Game from Difficult_Rocket.main import Game
@ -59,9 +59,15 @@ class ModInfo(Options):
config: Options = Options() # mod 配置存储 config: Options = Options() # mod 配置存储
old_mod: Optional["ModInfo"] = None # 旧的mod实例 old_mod: Optional["ModInfo"] = None # 旧的mod实例
def __init__(self, **kwargs):
if not self.DR_version[0] <= DR_status.DR_version <= self.DR_version[1]:
warnings.warn(f"mod {self.mod_id} version {self.version} is not support by DR {DR_status.DR_version}\nDR {self.DR_version} is required")
if not self.DR_Api_version[0] <= DR_status.API_version <= self.DR_Api_version[1]:
warnings.warn(f"mod {self.mod_id} version {self.version} is not support by DR {DR_status.API_version}\nDR {self.DR_Api_version} is required")
super().__init__(**kwargs)
def on_load(self, game: Game, old_self: Optional["ModInfo"] = None) -> bool: def on_load(self, game: Game, old_self: Optional["ModInfo"] = None) -> bool:
""" 加载时调用 """ """ 加载时调用 """
print(f'Mod {self.mod_id} loaded')
return True return True
def on_client_start(self, game: Game, client: ClientWindow): def on_client_start(self, game: Game, client: ClientWindow):

View File

@ -0,0 +1,34 @@
# -------------------------------
# Difficult Rocket
# Copyright © 2020-2023 by shenjackyuanjie 3695888@qq.com
# All rights reserved
# -------------------------------
import logging
from typing import Callable
__all__ = [
'get_named_client_logger',
'get_named_server_logger',
'get_named_main_logger',
]
def _gen_get_named_logger(from_name: str) -> Callable[[str], logging.Logger]:
def get_named_logger(name: str) -> logging.Logger:
logger = logging.getLogger(from_name)
logger.name = f'{from_name}.{name}'
return logger
return get_named_logger
get_named_client_logger = _gen_get_named_logger('client')
# 用于获取一个基于 client 配置的 logger
get_named_server_logger = _gen_get_named_logger('server')
# 用于获取一个基于 server 配置的 logger
get_named_main_logger = _gen_get_named_logger('main')
# 用于获取一个基于 main 配置的 logger

View File

@ -17,6 +17,16 @@
- `server_running` - `server_running`
- 服务器是否在运行 - 服务器是否在运行
- Is server running - Is server running
- Mod loader
- 添加了对支持版本号的 warnings
- Added warnings for supporting version numbers
- API
- `Difficult_Rocket.api.log`
- `get_named_client_logger`
- `get_named_server_logger`
- `get_named_main_logger`
- 分别用于获取 基于 对应名称配置的 logger
- Get the logger for the corresponding name configuration
### 移动 ### 移动

View File

@ -9,6 +9,7 @@ import traceback
from typing import Optional from typing import Optional
from Difficult_Rocket import DR_status
from Difficult_Rocket.main import Game from Difficult_Rocket.main import Game
from Difficult_Rocket.api.mod import ModInfo from Difficult_Rocket.api.mod import ModInfo
from Difficult_Rocket.api.types import Options, Version from Difficult_Rocket.api.types import Options, Version
@ -58,7 +59,7 @@ class DR_mod(ModInfo):
config = DR_mod_runtime config = DR_mod_runtime
# DR_version = # DR SDK 兼容版本 DR_version = (DR_status.DR_version, DR_status.DR_version) # DR SDK 兼容版本
# 反正是内置 mod 跟着最新版本的 DR 走就行了 # 反正是内置 mod 跟着最新版本的 DR 走就行了
# DR_Api_version = # DR Api版本 # DR_Api_version = # DR Api版本
# 同理 不管 API 版本 这东西要是不兼容了才是大问题 # 同理 不管 API 版本 这东西要是不兼容了才是大问题

View File

@ -4,12 +4,11 @@
# All rights reserved # All rights reserved
# ------------------------------- # -------------------------------
import math # import math
import time import time
import random import random
import logging
import traceback import traceback
from xml.etree import ElementTree # from xml.etree import ElementTree
from xml.etree.ElementTree import Element from xml.etree.ElementTree import Element
from typing import List, TYPE_CHECKING, Union, Dict, Optional, Generator from typing import List, TYPE_CHECKING, Union, Dict, Optional, Generator
@ -21,7 +20,7 @@ from pyglet.math import Vec4
from pyglet.text import Label from pyglet.text import Label
from pyglet.shapes import Line, Rectangle from pyglet.shapes import Line, Rectangle
from pyglet.sprite import Sprite from pyglet.sprite import Sprite
from pyglet.image import Texture # from pyglet.image import Texture
from pyglet.graphics import Batch, Group from pyglet.graphics import Batch, Group
from . import DR_mod_runtime from . import DR_mod_runtime
@ -32,6 +31,7 @@ from Difficult_Rocket.utils.translate import tr
from Difficult_Rocket.api.types import Fonts, Options from Difficult_Rocket.api.types import Fonts, Options
from Difficult_Rocket.command.line import CommandText from Difficult_Rocket.command.line import CommandText
from Difficult_Rocket.client.screen import BaseScreen from Difficult_Rocket.client.screen import BaseScreen
from Difficult_Rocket.api.log import get_named_client_logger
from .types import SR1Textures, SR1PartTexture, SR1PartData, SR1Rotation, xml_bool from .types import SR1Textures, SR1PartTexture, SR1PartData, SR1Rotation, xml_bool
if TYPE_CHECKING: if TYPE_CHECKING:
@ -40,7 +40,7 @@ if TYPE_CHECKING:
if DR_mod_runtime.use_DR_rust: if DR_mod_runtime.use_DR_rust:
from .Difficult_Rocket_rs import CenterCamera_rs, SR1PartList_rs, SR1Ship_rs from .Difficult_Rocket_rs import CenterCamera_rs, SR1PartList_rs, SR1Ship_rs
logger = logging.getLogger('client') logger = get_named_client_logger('dr_game_sr1_ship')
def get_sr1_part(part_xml: Element) -> Optional[SR1PartData]: def get_sr1_part(part_xml: Element) -> Optional[SR1PartData]: