06/04 Improve system logs UI/UX

This commit is contained in:
2026-06-04 11:58:04 -04:00
parent 1fc33ca60f
commit 48322b609f
5 changed files with 553 additions and 250 deletions
+19 -2
View File
@@ -49,13 +49,26 @@ def _parse_line(raw):
@logs_bp.route('/')
@login_required
def index():
import datetime
log_file = current_app.config.get('LOG_FILE_PATH', '')
file_exists = bool(log_file) and os.path.isfile(log_file)
file_size = os.path.getsize(log_file) if file_exists else 0
file_mtime = None
if file_exists:
ts = os.path.getmtime(log_file)
file_mtime = datetime.datetime.fromtimestamp(ts).strftime('%b %d, %H:%M')
def fmt_size(b):
if b < 1024: return f'{b} B'
if b < 1024**2: return f'{b/1024:.1f} KB'
return f'{b/1024**2:.1f} MB'
return render_template('logs/index.html',
log_file=log_file,
file_exists=file_exists,
file_size=file_size)
file_size=file_size,
file_size_fmt=fmt_size(file_size),
file_mtime=file_mtime)
@logs_bp.route('/api')
@@ -87,17 +100,21 @@ def api():
# Most-recent first, capped at limit
entries = list(reversed(entries))[:limit]
# Count per level across ALL unfiltered lines (for the stats bar)
# Count per level + unique modules across ALL unfiltered lines
all_entries = [_parse_line(l) for l in raw_lines if l.strip()]
counts = {}
modules_seen = set()
for e in all_entries:
counts[e['level']] = counts.get(e['level'], 0) + 1
if e['name']:
modules_seen.add(e['name'])
return jsonify({
'entries': entries,
'counts': counts,
'total_raw': len(raw_lines),
'log_file': log_file,
'modules': sorted(modules_seen),
})