plain.observer 0.6.0__tar.gz → 0.6.1__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.
Potentially problematic release.
This version of plain.observer might be problematic. Click here for more details.
- {plain_observer-0.6.0 → plain_observer-0.6.1}/PKG-INFO +1 -1
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/CHANGELOG.md +12 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/config.py +6 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/logging.py +3 -2
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/models.py +0 -11
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/otel.py +4 -2
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/partials/log.html +2 -6
- {plain_observer-0.6.0 → plain_observer-0.6.1}/pyproject.toml +1 -1
- {plain_observer-0.6.0 → plain_observer-0.6.1}/.gitignore +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/LICENSE +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/README.md +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/README.md +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/__init__.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/admin.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/cli.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/core.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/default_settings.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0001_initial.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0002_trace_share_created_at_trace_share_id_trace_summary_and_more.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0003_span_plainobserv_span_id_e7ade3_idx.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0004_trace_app_name_trace_app_version.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0005_log_log_plainobserv_trace_i_fcfb7d_idx_and_more.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0006_remove_log_logger.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/__init__.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/partials/span.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/trace.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/trace_detail.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/trace_share.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/traces.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/toolbar/observer.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/toolbar/observer_button.html +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/toolbar.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/urls.py +0 -0
- {plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/views.py +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# plain-observer changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.1](https://github.com/dropseed/plain/releases/plain-observer@0.6.1) (2025-09-09)
|
|
4
|
+
|
|
5
|
+
### What's changed
|
|
6
|
+
|
|
7
|
+
- Log messages are now stored in their formatted form instead of as raw log records, improving display consistency and performance ([b646699](https://github.com/dropseed/plain/commit/b646699e46))
|
|
8
|
+
- Observer log handler now copies the formatter from the app logger to ensure consistent log formatting ([b646699](https://github.com/dropseed/plain/commit/b646699e46))
|
|
9
|
+
- Simplified log display template by removing redundant level display element ([b646699](https://github.com/dropseed/plain/commit/b646699e46))
|
|
10
|
+
|
|
11
|
+
### Upgrade instructions
|
|
12
|
+
|
|
13
|
+
- No changes required
|
|
14
|
+
|
|
3
15
|
## [0.6.0](https://github.com/dropseed/plain/releases/plain-observer@0.6.0) (2025-09-09)
|
|
4
16
|
|
|
5
17
|
### What's changed
|
|
@@ -46,6 +46,12 @@ class Config(PackageConfig):
|
|
|
46
46
|
|
|
47
47
|
# Install the logging handler to capture logs during traces
|
|
48
48
|
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
|
+
|
|
49
55
|
app_logger.addHandler(observer_log_handler)
|
|
50
56
|
|
|
51
57
|
@staticmethod
|
|
@@ -44,9 +44,10 @@ class ObserverLogHandler(logging.Handler):
|
|
|
44
44
|
if trace_info["mode"] != ObserverMode.PERSIST.value:
|
|
45
45
|
return
|
|
46
46
|
|
|
47
|
-
# Store the
|
|
47
|
+
# Store the formatted message with span context
|
|
48
48
|
log_entry = {
|
|
49
|
-
"
|
|
49
|
+
"message": self.format(record),
|
|
50
|
+
"level": record.levelname,
|
|
50
51
|
"span_id": span_id,
|
|
51
52
|
"timestamp": datetime.fromtimestamp(record.created, tz=UTC),
|
|
52
53
|
}
|
|
@@ -500,14 +500,3 @@ class Log(models.Model):
|
|
|
500
500
|
models.Index(fields=["timestamp"]),
|
|
501
501
|
models.Index(fields=["trace"]),
|
|
502
502
|
]
|
|
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
|
-
)
|
|
@@ -353,9 +353,11 @@ class ObserverSpanProcessor(SpanProcessor):
|
|
|
353
353
|
|
|
354
354
|
log_models = []
|
|
355
355
|
for log_entry in logs:
|
|
356
|
-
log_model = Log
|
|
357
|
-
record=log_entry["record"],
|
|
356
|
+
log_model = Log(
|
|
358
357
|
trace=trace,
|
|
358
|
+
timestamp=log_entry["timestamp"],
|
|
359
|
+
level=log_entry["level"],
|
|
360
|
+
message=log_entry["message"],
|
|
359
361
|
span=span_id_to_model.get(log_entry["span_id"]),
|
|
360
362
|
)
|
|
361
363
|
log_models.append(log_model)
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/partials/log.html
RENAMED
|
@@ -6,14 +6,10 @@
|
|
|
6
6
|
</svg>
|
|
7
7
|
</div>
|
|
8
8
|
<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
|
|
9
|
+
<span data-level="{{ log.level }}" class="font-mono text-white/90 break-words
|
|
10
10
|
data-[level='DEBUG']:text-stone-400
|
|
11
|
-
data-[level='INFO']:text-blue-400
|
|
12
11
|
data-[level='WARNING']:text-yellow-400
|
|
13
12
|
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>
|
|
18
14
|
</div>
|
|
19
15
|
</div>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/migrations/0006_remove_log_logger.py
RENAMED
|
File without changes
|
|
File without changes
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/partials/span.html
RENAMED
|
File without changes
|
|
File without changes
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/trace_detail.html
RENAMED
|
File without changes
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/observer/trace_share.html
RENAMED
|
File without changes
|
|
File without changes
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/toolbar/observer.html
RENAMED
|
File without changes
|
{plain_observer-0.6.0 → plain_observer-0.6.1}/plain/observer/templates/toolbar/observer_button.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|