Skip to content

Commit b0753a7

Browse files
murzinov01Mikhail Murzinov
andauthored
[Logging configuration] Add kwargs for structlog.processors.TimeStamper (#140)
* add kwargs for timestamper processor in LoggingConfig * chore: review fixes --------- Co-authored-by: Mikhail Murzinov <Mikhail.MURZINOV@raiffeisen.ru>
1 parent 1a29a79 commit b0753a7

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

microbootstrap/instruments/logging_instrument.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ def tracer_injection(_: WrappedLogger, __: str, event_dict: EventDict) -> EventD
7878
structlog.stdlib.add_logger_name,
7979
tracer_injection,
8080
structlog.stdlib.PositionalArgumentsFormatter(),
81-
structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M:%S"),
8281
structlog.processors.StackInfoRenderer(),
8382
structlog.processors.format_exc_info,
8483
structlog.processors.UnicodeDecoder(),
@@ -149,6 +148,9 @@ class LoggingConfig(BaseInstrumentConfig):
149148
)
150149
logging_exclude_endpoints: list[str] = pydantic.Field(default_factory=lambda: ["/health/", "/metrics"])
151150
logging_turn_off_middleware: bool = False
151+
logging_timestamper_extra_params: dict[str, typing.Any] = pydantic.Field(
152+
default_factory=lambda: {"fmt": "%Y-%m-%d %H:%M:%S"}
153+
)
152154

153155
@pydantic.model_validator(mode="after")
154156
def remove_trailing_slashes_from_logging_exclude_endpoints(self) -> typing_extensions.Self:
@@ -172,6 +174,10 @@ def _unset_handlers(self) -> None:
172174
for unset_handlers_logger in self.instrument_config.logging_unset_handlers:
173175
logging.getLogger(unset_handlers_logger).handlers = []
174176

177+
@property
178+
def _timestamper_processor(self) -> structlog.processors.TimeStamper:
179+
return structlog.processors.TimeStamper(**self.instrument_config.logging_timestamper_extra_params)
180+
175181
def _configure_structlog_loggers(self) -> None:
176182
if self.instrument_config.service_debug:
177183
structlog.configure(
@@ -186,6 +192,7 @@ def _configure_structlog_loggers(self) -> None:
186192
processors=[
187193
structlog.stdlib.filter_by_level,
188194
*STRUCTLOG_PRE_CHAIN_PROCESSORS,
195+
self._timestamper_processor,
189196
*self.instrument_config.logging_extra_processors,
190197
STRUCTLOG_FORMATTER_PROCESSOR,
191198
],
@@ -213,7 +220,7 @@ def _configure_foreign_loggers(self) -> None:
213220
)
214221
if self.instrument_config.service_debug
215222
else structlog.stdlib.ProcessorFormatter(
216-
foreign_pre_chain=STRUCTLOG_PRE_CHAIN_PROCESSORS,
223+
foreign_pre_chain=[*STRUCTLOG_PRE_CHAIN_PROCESSORS, self._timestamper_processor],
217224
processors=[
218225
structlog.stdlib.ProcessorFormatter.remove_processors_meta,
219226
STRUCTLOG_FORMATTER_PROCESSOR,

0 commit comments

Comments
 (0)