Skip to content

Commit 4345d8b

Browse files
committed
chore: move public methods up, remove unused test var
1 parent 903653f commit 4345d8b

File tree

2 files changed

+25
-24
lines changed

2 files changed

+25
-24
lines changed

aws_lambda_powertools/logging/formatter.py

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,29 @@ def __init__(
120120
keys_combined = {**self._build_default_keys(), **kwargs}
121121
self.log_format.update(**keys_combined)
122122

123+
def format(self, record: logging.LogRecord) -> str: # noqa: A003
124+
"""Format logging record as structured JSON str"""
125+
formatted_log = self._extract_log_keys(log_record=record)
126+
formatted_log["message"] = self._extract_log_message(log_record=record)
127+
formatted_log["exception"], formatted_log["exception_name"] = self._extract_log_exception(log_record=record)
128+
formatted_log["xray_trace_id"] = self._get_latest_trace_id()
129+
formatted_log = self._strip_none_records(records=formatted_log)
130+
131+
return self.json_serializer(formatted_log)
132+
133+
def formatTime(self, record: logging.LogRecord, datefmt: Optional[str] = None) -> str:
134+
# NOTE: Pyhton time.strftime doesn't provide msec directives
135+
# so we create a custom one (%F) and replace logging record ts
136+
# Reason 2 is that std logging doesn't support msec after TZ
137+
record_ts = self.converter(record.created)
138+
if datefmt:
139+
ts_formatted = time.strftime(datefmt, record_ts)
140+
else:
141+
msec = "%03d" % record.msecs
142+
custom_fmt = self.default_time_format.replace(self.custom_ms_time_directive, msec)
143+
ts_formatted = time.strftime(custom_fmt, record_ts)
144+
return ts_formatted
145+
123146
def append_keys(self, **additional_keys):
124147
self.log_format.update(additional_keys)
125148

@@ -218,27 +241,5 @@ def _strip_none_records(records: Dict[str, Any]) -> Dict[str, Any]:
218241
"""Remove any key with None as value"""
219242
return {k: v for k, v in records.items() if v is not None}
220243

221-
def format(self, record): # noqa: A003
222-
formatted_log = self._extract_log_keys(log_record=record)
223-
formatted_log["message"] = self._extract_log_message(log_record=record)
224-
formatted_log["exception"], formatted_log["exception_name"] = self._extract_log_exception(log_record=record)
225-
formatted_log["xray_trace_id"] = self._get_latest_trace_id()
226-
formatted_log = self._strip_none_records(records=formatted_log)
227-
228-
return self.json_serializer(formatted_log)
229-
230-
def formatTime(self, record: logging.LogRecord, datefmt: Optional[str] = None) -> str:
231-
# NOTE: Pyhton time.strftime doesn't provide msec directives
232-
# so we create a custom one (%F) and replace logging record ts
233-
# Reason 2 is that std logging doesn't support msec after TZ
234-
record_ts = self.converter(record.created)
235-
if datefmt:
236-
ts_formatted = time.strftime(datefmt, record_ts)
237-
else:
238-
msec = "%03d" % record.msecs
239-
custom_fmt = self.default_time_format.replace(self.custom_ms_time_directive, msec)
240-
ts_formatted = time.strftime(custom_fmt, record_ts)
241-
return ts_formatted
242-
243244

244245
JsonFormatter = LambdaPowertoolsFormatter # alias to previous formatter

tests/functional/test_logger_powertools_formatter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,9 @@ def test_log_custom_std_log_attribute(stdout, service_name):
258258
assert "%" not in log_dict["process"]
259259

260260

261-
def test_log_in_utc(stdout, service_name):
261+
def test_log_in_utc(service_name):
262262
# GIVEN a logger where UTC TZ has been set
263-
logger = Logger(service=service_name, stream=stdout, utc=True)
263+
logger = Logger(service=service_name, utc=True)
264264

265265
# THEN logging formatter time converter should use gmtime fn
266266
assert logger._logger.handlers[0].formatter.converter == time.gmtime

0 commit comments

Comments
 (0)