bdd-trace 0.5.2__tar.gz → 0.5.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bdd-trace
3
- Version: 0.5.2
3
+ Version: 0.5.4
4
4
  Summary: BDD项目日志和追踪SDK
5
5
  Author: 蔡涛
6
6
  Author-email: 蔡涛 <caitao@zhejianglab.cn>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bdd-trace"
3
- version = "0.5.2"
3
+ version = "0.5.4"
4
4
  description = "BDD项目日志和追踪SDK"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "蔡涛", email = "caitao@zhejianglab.cn" }]
@@ -15,6 +15,7 @@ def setup_logging(
15
15
  profile: Profile,
16
16
  modules: list[str],
17
17
  level: str | int = INFO,
18
+ enable_console_log: bool = True,
18
19
  trace_id_format: str = "%(asctime)s|%(levelname)s|%(name)s|%(otelTraceID)s|%(message)s",
19
20
  no_trace_id_format: str = "%(asctime)s|%(levelname)s|%(name)s|%(message)s",
20
21
  extra_handlers: list[Handler] | None = None,
@@ -27,13 +28,18 @@ def setup_logging(
27
28
  root_logger.handlers = []
28
29
 
29
30
  _log_queue = Queue(1000)
30
- for module in modules:
31
- _setup_module_logger(level, module)
32
-
33
31
  log_process_handlers = extra_handlers or []
34
- format = trace_id_format if profile != Profile.NO_TRACE else no_trace_id_format
35
- console_handler = _create_console_handler(modules, format)
36
- log_process_handlers.append(console_handler)
32
+
33
+ for module in modules:
34
+ origin_handlers = _setup_module_logger(level, module)
35
+ for handler in origin_handlers:
36
+ handler.addFilter(ModulePrefixFilter([module]))
37
+ log_process_handlers.append(handler)
38
+
39
+ if enable_console_log:
40
+ format = trace_id_format if profile != Profile.NO_TRACE else no_trace_id_format
41
+ console_handler = _create_console_handler(modules, format)
42
+ log_process_handlers.append(console_handler)
37
43
  if profile != Profile.NO_TRACE:
38
44
  otel_handler = LoggingHandler()
39
45
  log_process_handlers.append(otel_handler)
@@ -50,26 +56,28 @@ def stop_logging() -> None:
50
56
  _log_queue = None
51
57
 
52
58
 
53
- def _create_console_handler(modules: list[str], format: str) -> Handler:
54
- class ModulePrefixFilter:
55
- def __init__(self, module_prefixes: list[str]):
56
- self.module_prefixes: set[str] = set(module_prefixes)
57
- self.module_prefixes_with_dot: tuple[str, ...] = tuple(f"{prefix}." for prefix in module_prefixes)
59
+ class ModulePrefixFilter:
60
+ def __init__(self, module_prefixes: list[str]):
61
+ self.module_prefixes: set[str] = set(module_prefixes)
62
+ self.module_prefixes_with_dot: tuple[str, ...] = tuple(f"{prefix}." for prefix in module_prefixes)
58
63
 
59
- def filter(self, record: LogRecord) -> bool:
60
- return record.name in self.module_prefixes or record.name.startswith(self.module_prefixes_with_dot)
64
+ def filter(self, record: LogRecord) -> bool:
65
+ return record.name in self.module_prefixes or record.name.startswith(self.module_prefixes_with_dot)
61
66
 
67
+
68
+ class SingleLineFormatter(Formatter):
69
+ def formatMessage(self, record: LogRecord) -> str:
70
+ return super().formatMessage(record).replace("\n", " ").replace("\r", "")
71
+
72
+
73
+ def _create_console_handler(modules: list[str], format: str) -> Handler:
62
74
  handler = StreamHandler(sys.stderr)
63
75
  handler.setFormatter(Formatter(format))
64
76
  handler.addFilter(ModulePrefixFilter(modules))
65
77
  return handler
66
78
 
67
79
 
68
- def _setup_module_logger(level: str | int, module: str) -> None:
69
- class SingleLineFormatter(Formatter):
70
- def formatMessage(self, record: LogRecord) -> str:
71
- return super().formatMessage(record).replace("\n", " ").replace("\r", "")
72
-
80
+ def _setup_module_logger(level: str | int, module: str) -> list[Handler]:
73
81
  logger = getLogger(module)
74
82
  logger.setLevel(level)
75
83
  logger.propagate = False
@@ -79,4 +87,6 @@ def _setup_module_logger(level: str | int, module: str) -> None:
79
87
  raise RuntimeError("log queue is not initialized")
80
88
  handler = QueueHandler(queue)
81
89
  handler.setFormatter(SingleLineFormatter())
90
+ origin_handlers = logger.handlers
82
91
  logger.handlers = [handler]
92
+ return origin_handlers or []
File without changes