Skip to content

Commit b646699

Browse files
committed
Store formatted log messages in observer
1 parent 1e16c9f commit b646699

File tree

5 files changed

+15
-21
lines changed

5 files changed

+15
-21
lines changed

plain-observer/plain/observer/config.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ def ready(self):
4646

4747
# Install the logging handler to capture logs during traces
4848
if observer_log_handler not in app_logger.handlers:
49+
# Copy formatter from existing app_logger handler to match log formatting
50+
for handler in app_logger.handlers:
51+
if handler.formatter:
52+
observer_log_handler.setFormatter(handler.formatter)
53+
break
54+
4955
app_logger.addHandler(observer_log_handler)
5056

5157
@staticmethod

plain-observer/plain/observer/logging.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ def emit(self, record):
4444
if trace_info["mode"] != ObserverMode.PERSIST.value:
4545
return
4646

47-
# Store the log record with span context
47+
# Store the formatted message with span context
4848
log_entry = {
49-
"record": record,
49+
"message": self.format(record),
50+
"level": record.levelname,
5051
"span_id": span_id,
5152
"timestamp": datetime.fromtimestamp(record.created, tz=UTC),
5253
}

plain-observer/plain/observer/models.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -500,14 +500,3 @@ class Meta:
500500
models.Index(fields=["timestamp"]),
501501
models.Index(fields=["trace"]),
502502
]
503-
504-
@classmethod
505-
def from_log_record(cls, *, record, trace, span):
506-
"""Create a Log instance from a Python log record."""
507-
return cls(
508-
trace=trace,
509-
timestamp=datetime.fromtimestamp(record.created, tz=UTC),
510-
level=record.levelname,
511-
message=record.getMessage(),
512-
span=span,
513-
)

plain-observer/plain/observer/otel.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,11 @@ def _export_trace(self, *, trace, spans, logs):
353353

354354
log_models = []
355355
for log_entry in logs:
356-
log_model = Log.from_log_record(
357-
record=log_entry["record"],
356+
log_model = Log(
358357
trace=trace,
358+
timestamp=log_entry["timestamp"],
359+
level=log_entry["level"],
360+
message=log_entry["message"],
359361
span=span_id_to_model.get(log_entry["span_id"]),
360362
)
361363
log_models.append(log_model)

plain-observer/plain/observer/templates/observer/partials/log.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,10 @@
66
</svg>
77
</div>
88
<span class="text-white/40 whitespace-nowrap tabular-nums" title="{{ log.timestamp|localtime }}">{{ log.timestamp|localtime|strftime("%-I:%M:%S %p") }}</span>
9-
<span class="font-mono px-1 py-0 text-xs font-medium rounded
9+
<span data-level="{{ log.level }}" class="font-mono text-white/90 break-words
1010
data-[level='DEBUG']:text-stone-400
11-
data-[level='INFO']:text-blue-400
1211
data-[level='WARNING']:text-yellow-400
1312
data-[level='ERROR']:text-red-400
14-
data-[level='CRITICAL']:text-red-300
15-
text-stone-400 text-center flex-shrink-0"
16-
data-level="{{ log.level }}">{{ log.level }}</span>
17-
<span class="font-mono text-white/90 break-words">{{ log.message }}</span>
13+
data-[level='CRITICAL']:text-red-300">{{ log.message }}</span>
1814
</div>
1915
</div>

0 commit comments

Comments
 (0)