Skip to content

Commit 8c021ea

Browse files
authored
Attach DBOS metadata to logs whether OTEL is specified or not (#368)
1 parent 3547fe7 commit 8c021ea

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

dbos/_dbos.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,13 @@
100100
DBOSNonExistentWorkflowError,
101101
)
102102
from ._event_loop import BackgroundEventLoop
103-
from ._logger import add_otlp_to_all_loggers, config_logger, dbos_logger, init_logger
103+
from ._logger import (
104+
add_otlp_to_all_loggers,
105+
add_transformer_to_all_loggers,
106+
config_logger,
107+
dbos_logger,
108+
init_logger,
109+
)
104110
from ._workflow_commands import get_workflow, list_workflow_steps
105111

106112
# Most DBOS functions are just any callable F, so decorators / wrappers work on F
@@ -514,6 +520,7 @@ def _launch(self, *, debug_mode: bool = False) -> None:
514520
for handler in dbos_logger.handlers:
515521
handler.flush()
516522
add_otlp_to_all_loggers()
523+
add_transformer_to_all_loggers()
517524
except Exception:
518525
dbos_logger.error(f"DBOS failed to launch: {traceback.format_exc()}")
519526
raise

dbos/_logger.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from ._dbos_config import ConfigFile
1717

1818
dbos_logger = logging.getLogger("dbos")
19-
_otlp_handler, _otlp_transformer = None, None
19+
_otlp_handler, _dbos_log_transformer = None, None
2020

2121

2222
class DBOSLogTransformer(logging.Filter):
@@ -93,25 +93,31 @@ def config_logger(config: "ConfigFile") -> None:
9393
global _otlp_handler
9494
_otlp_handler = LoggingHandler(logger_provider=log_provider)
9595

96-
# Attach DBOS-specific attributes to all log entries.
97-
global _otlp_transformer
98-
_otlp_transformer = DBOSLogTransformer()
99-
10096
# Direct DBOS logs to OTLP
10197
dbos_logger.addHandler(_otlp_handler)
102-
dbos_logger.addFilter(_otlp_transformer)
98+
99+
# Attach DBOS-specific attributes to all log entries.
100+
global _dbos_log_transformer
101+
_dbos_log_transformer = DBOSLogTransformer()
102+
dbos_logger.addFilter(_dbos_log_transformer)
103103

104104

105105
def add_otlp_to_all_loggers() -> None:
106-
if _otlp_handler is not None and _otlp_transformer is not None:
106+
if _otlp_handler is not None:
107107
root = logging.root
108-
109108
root.addHandler(_otlp_handler)
110-
root.addFilter(_otlp_transformer)
111-
112109
for logger_name in root.manager.loggerDict:
113110
if logger_name != dbos_logger.name:
114111
logger = logging.getLogger(logger_name)
115112
if not logger.propagate:
116113
logger.addHandler(_otlp_handler)
117-
logger.addFilter(_otlp_transformer)
114+
115+
116+
def add_transformer_to_all_loggers() -> None:
117+
if _dbos_log_transformer is not None:
118+
root = logging.root
119+
root.addFilter(_dbos_log_transformer)
120+
for logger_name in root.manager.loggerDict:
121+
if logger_name != dbos_logger.name:
122+
logger = logging.getLogger(logger_name)
123+
logger.addFilter(_dbos_log_transformer)

0 commit comments

Comments
 (0)