Skip to content

Commit aa43abd

Browse files
committed
fix(log): set_level fail (#17)
1 parent 770c0df commit aa43abd

File tree

2 files changed

+45
-28
lines changed

2 files changed

+45
-28
lines changed

lagrange/utils/log.py

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,21 @@
77

88

99
class Logger(Protocol):
10-
def info(self, __message: str, *args, **kwargs):
11-
...
10+
def info(self, __message: str, *args, **kwargs): ...
1211

13-
def debug(self, __message: str, *args, **kwargs):
14-
...
12+
def debug(self, __message: str, *args, **kwargs): ...
1513

16-
def success(self, __message: str, *args, **kwargs):
17-
...
14+
def success(self, __message: str, *args, **kwargs): ...
1815

19-
def warning(self, __message: str, *args, **kwargs):
20-
...
16+
def warning(self, __message: str, *args, **kwargs): ...
2117

22-
def error(self, __message: str, *args, **kwargs):
23-
...
18+
def error(self, __message: str, *args, **kwargs): ...
2419

25-
def critical(self, __message: str, *args, **kwargs):
26-
...
20+
def critical(self, __message: str, *args, **kwargs): ...
2721

28-
def exception(self, __message: str, *args, **kwargs):
29-
...
22+
def exception(self, __message: str, *args, **kwargs): ...
23+
24+
def set_level(self, level: Union[str, int]): ...
3025

3126

3227
class LoggingLoggerProxy:
@@ -39,6 +34,7 @@ def __init__(self, logger: logging.Logger):
3934
self.error = logger.error
4035
self.critical = logger.critical
4136
self.exception = logger.exception
37+
self.set_level = logger.setLevel
4238

4339

4440
class _Logger:
@@ -69,13 +65,18 @@ def critical(self, msg: str, *args, **kwargs):
6965
def exception(self, msg: str, *args, **kwargs):
7066
_Logger.get_logger(self).exception(msg, *args, **kwargs)
7167

68+
def set_level(self, level: Union[str, int]):
69+
_Logger.get_logger(self).set_level(level)
70+
7271

7372
_Logger.get_logger = lambda self: LoggingLoggerProxy(self._root)
7473

7574

7675
class LoggerProvider:
7776
def __init__(self):
78-
logging.basicConfig(level="INFO", format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s")
77+
logging.basicConfig(
78+
level="INFO", format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s"
79+
)
7980
self._root = logging.getLogger("lagrange")
8081
self.loggers: dict[str, _Logger] = {
8182
"lagrange": _Logger(self._root),
@@ -84,9 +85,12 @@ def __init__(self):
8485
self.fork("network")
8586
self.fork("utils")
8687

87-
@staticmethod
88-
def set_level(level: Union[str, int]):
89-
logging.basicConfig(level=level, format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s")
88+
def set_level(self, level: Union[str, int]):
89+
logging.basicConfig(
90+
level=level, format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s"
91+
)
92+
for _, logger in self.loggers.items():
93+
logger.set_level(level)
9094

9195
def fork(self, child_name: str):
9296
logger = _Logger(self._root.getChild(child_name))
@@ -126,19 +130,27 @@ def emit(self, record: logging.LogRecord):
126130
level = record.levelno
127131

128132
frame, depth = inspect.currentframe(), 0
129-
while frame and (depth == 0 or frame.f_code.co_filename == logging.__file__):
133+
while frame and (
134+
depth == 0 or frame.f_code.co_filename == logging.__file__
135+
):
130136
frame = frame.f_back
131137
depth += 1
132138

133139
logger.opt(depth=depth, exception=record.exc_info).log(
134140
level, record.getMessage()
135141
)
136142

137-
logging.basicConfig(handlers=[LoguruHandler()], level="INFO", format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s")
143+
logging.basicConfig(
144+
handlers=[LoguruHandler()],
145+
level="INFO",
146+
format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s",
147+
)
138148

139149
def default_filter(record):
140150
log_level = record["extra"].get("lagrange_log_level", "INFO")
141-
levelno = logger.level(log_level).no if isinstance(log_level, str) else log_level
151+
levelno = (
152+
logger.level(log_level).no if isinstance(log_level, str) else log_level
153+
)
142154
return record["level"].no >= levelno
143155

144156
logger.remove()
@@ -149,16 +161,19 @@ def default_filter(record):
149161
backtrace=True,
150162
colorize=True,
151163
filter=default_filter,
152-
format="<g>{time:MM-DD HH:mm:ss}</g> | <lvl>{level: <8}</lvl> | <c><u>{name}</u></c> | <lvl>{message}</lvl>"
164+
format="<g>{time:MM-DD HH:mm:ss}</g> | <lvl>{level: <8}</lvl> | <c><u>{name}</u></c> | <lvl>{message}</lvl>",
153165
)
154166

155167
def _config(level: Union[str, int]):
156-
logging.basicConfig(handlers=[LoguruHandler()], level=level, format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s")
157-
logger.configure(
158-
extra={"lagrange_log_level": level}
168+
logging.basicConfig(
169+
handlers=[LoguruHandler()],
170+
level=level,
171+
format="%(asctime)s | %(name)s[%(levelname)s]: %(message)s",
159172
)
173+
logger.configure(extra={"lagrange_log_level": level})
160174

161175
log.set_level = _config
162176

163-
_Logger.get_logger = lambda self: logger.patch(lambda r: r.update(name=self.context))
164-
177+
_Logger.get_logger = lambda self: logger.patch(
178+
lambda r: r.update(name=self.context)
179+
)

main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import os
33

4-
from lagrange import Lagrange
4+
from lagrange import Lagrange, install_loguru
55
from lagrange.client.client import Client
66
from lagrange.client.events.group import GroupMessage
77
from lagrange.client.events.service import ServerKick
@@ -36,7 +36,9 @@ async def handle_kick(client: "Client", event: "ServerKick"):
3636
"linux",
3737
os.environ.get("LAGRANGE_SIGN_URL", "")
3838
)
39+
install_loguru() # optional, for better logging
3940
lag.log.set_level("DEBUG")
41+
4042
lag.subscribe(GroupMessage, msg_handler)
4143
lag.subscribe(ServerKick, handle_kick)
4244

0 commit comments

Comments
 (0)