06/04 Improve system logs UI/UX
This commit is contained in:
+19
-2
@@ -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),
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user