Skip to content

Commit 21db989

Browse files
committed
优化日志体系,避免重复落盘,缓解日志文件过大的问题
1 parent bf88a54 commit 21db989

2 files changed

Lines changed: 36 additions & 41 deletions

File tree

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,7 @@
11
import logging
2-
import os
3-
from pathlib import Path
42

3+
from utils.logger import get_logger as _get_shared_logger
54

6-
def get_logger(name: str) -> logging.Logger:
7-
logger = logging.getLogger(name)
8-
if logger.handlers:
9-
return logger
10-
11-
logger.setLevel(logging.DEBUG)
12-
13-
log_dir = Path("./debug")
14-
log_dir.mkdir(parents=True, exist_ok=True)
15-
fh = logging.FileHandler(log_dir / "agent.log", encoding="utf-8")
16-
fh.setLevel(logging.DEBUG)
175

18-
ch = logging.StreamHandler()
19-
ch.setLevel(logging.DEBUG)
20-
21-
fmt = logging.Formatter(
22-
"[%(asctime)s][%(name)s][%(levelname)s] %(message)s",
23-
datefmt="%Y-%m-%d %H:%M:%S",
24-
)
25-
fh.setFormatter(fmt)
26-
ch.setFormatter(fmt)
27-
28-
logger.addHandler(fh)
29-
logger.addHandler(ch)
30-
return logger
6+
def get_logger(name: str) -> logging.Logger:
7+
return _get_shared_logger(name)

agent/utils/logger.py

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,9 @@ def format(self, record):
138138
_FILE_FORMAT = logging.Formatter(
139139
"%(asctime)s | %(levelname)-8s | %(name)s:%(funcName)s:%(lineno)d | %(message)s"
140140
)
141-
_std_logger = logging.getLogger("maante")
141+
_APP_LOGGER_NAME = "maante"
142+
_ROOT_LOGGER = logging.getLogger()
143+
_NOISY_LOGGER_NAMES = ("cv2", "numpy", "PIL", "matplotlib", "urllib3", "asyncio")
142144

143145

144146
def _resolve_level(level) -> int:
@@ -147,6 +149,15 @@ def _resolve_level(level) -> int:
147149
return getattr(logging, str(level).upper(), logging.INFO)
148150

149151

152+
def _configure_noisy_loggers():
153+
for name in _NOISY_LOGGER_NAMES:
154+
logging.getLogger(name).setLevel(logging.WARNING)
155+
156+
157+
def get_logger(name=None):
158+
return logging.getLogger(name or _APP_LOGGER_NAME)
159+
160+
150161
def _setup_loguru_logger(log_dir="debug/custom", console_level="INFO"):
151162
os.makedirs(log_dir, exist_ok=True)
152163
_loguru_logger.remove()
@@ -172,25 +183,26 @@ def _setup_loguru_logger(log_dir="debug/custom", console_level="INFO"):
172183
filter=_enrich_record,
173184
)
174185

175-
logging.root.handlers = [_InterceptHandler()]
176-
logging.root.setLevel(logging.DEBUG)
177-
for name in ("cv2", "numpy", "PIL", "matplotlib", "urllib3", "asyncio"):
178-
logging.getLogger(name).setLevel(logging.WARNING)
186+
_ROOT_LOGGER.handlers = [_InterceptHandler()]
187+
_ROOT_LOGGER.setLevel(logging.DEBUG)
188+
_configure_noisy_loggers()
179189

180-
return _loguru_logger
190+
app_logger = get_logger(_APP_LOGGER_NAME)
191+
app_logger.setLevel(logging.NOTSET)
192+
app_logger.propagate = True
193+
return app_logger
181194

182195

183196
def _setup_std_logger(log_dir="debug/custom", console_level="INFO"):
184197
os.makedirs(log_dir, exist_ok=True)
185198

186-
_std_logger.handlers.clear()
187-
_std_logger.setLevel(logging.DEBUG)
188-
_std_logger.propagate = False
199+
_ROOT_LOGGER.handlers.clear()
200+
_ROOT_LOGGER.setLevel(logging.DEBUG)
189201

190202
console_handler = logging.StreamHandler(_resolve_console_stream())
191203
console_handler.setLevel(_resolve_level(console_level))
192204
console_handler.setFormatter(_ConsoleFormatter())
193-
_std_logger.addHandler(console_handler)
205+
_ROOT_LOGGER.addHandler(console_handler)
194206

195207
file_handler = TimedRotatingFileHandler(
196208
os.path.join(log_dir, "runtime.log"),
@@ -201,13 +213,18 @@ def _setup_std_logger(log_dir="debug/custom", console_level="INFO"):
201213
)
202214
file_handler.setLevel(logging.DEBUG)
203215
file_handler.setFormatter(_FILE_FORMAT)
204-
_std_logger.addHandler(file_handler)
216+
_ROOT_LOGGER.addHandler(file_handler)
217+
218+
_configure_noisy_loggers()
205219

206-
return _std_logger
220+
app_logger = get_logger(_APP_LOGGER_NAME)
221+
app_logger.setLevel(logging.NOTSET)
222+
app_logger.propagate = True
223+
return app_logger
207224

208225

209226
def setup_logger(log_dir="debug/custom", console_level="INFO"):
210-
"""设置 logger(优先 loguru,无 loguru 时回退到标准 logging)"""
227+
"""设置统一 logger(优先 loguru,无 loguru 时回退到标准 logging)"""
211228
if _HAS_LOGURU:
212229
return _setup_loguru_logger(log_dir=log_dir, console_level=console_level)
213230
return _setup_std_logger(log_dir=log_dir, console_level=console_level)
@@ -219,6 +236,7 @@ def change_console_level(level="DEBUG"):
219236
logger.info(f"控制台日志等级已更改为: {level}")
220237

221238

222-
logger = setup_logger(console_level="WARNING" if _is_mxu_client() else "INFO")
239+
setup_logger(console_level="WARNING" if _is_mxu_client() else "INFO")
240+
logger = get_logger(_APP_LOGGER_NAME)
223241

224-
__all__ = ["setup_logger", "change_console_level", "logger"]
242+
__all__ = ["setup_logger", "change_console_level", "get_logger", "logger"]

0 commit comments

Comments
 (0)