64 lines
2.2 KiB
HTML
64 lines
2.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Node Monitor - Logs</title>
|
|
<style>
|
|
body { font-family: monospace; margin: 20px; background: #1a1a1a; color: #00ff00; }
|
|
.log-entry { margin: 5px 0; padding: 5px; border-left: 3px solid #333; }
|
|
.log-info { border-left-color: #0066cc; }
|
|
.log-warning { border-left-color: #ff9900; }
|
|
.log-error { border-left-color: #cc0000; }
|
|
.timestamp { color: #666; }
|
|
.level { font-weight: bold; margin-right: 10px; }
|
|
.message { color: #fff; }
|
|
.extra { color: #888; font-size: 0.9em; margin-top: 3px; }
|
|
h1 { color: #00ff00; }
|
|
.refresh-info { color: #666; margin: 10px 0; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Node Monitor Logs - {{ service_uuid }}</h1>
|
|
<div class="refresh-info">Auto-refreshing every 5 seconds...</div>
|
|
|
|
<div id="logs-container">
|
|
{% for log in logs %}
|
|
<div class="log-entry log-{{ log.level.lower() }}">
|
|
<span class="timestamp">{{ log.timestamp }}</span>
|
|
<span class="level">{{ log.level }}</span>
|
|
<span class="message">{{ log.message }}</span>
|
|
{% if log.extra %}
|
|
<div class="extra">{{ log.extra | tojson }}</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<script>
|
|
// Auto-refresh logs every 5 seconds
|
|
setInterval(async function() {
|
|
try {
|
|
const response = await fetch('{{ service_uuid }}/logs/json');
|
|
const data = await response.json();
|
|
|
|
const container = document.getElementById('logs-container');
|
|
container.innerHTML = '';
|
|
|
|
data.logs.forEach(log => {
|
|
const div = document.createElement('div');
|
|
div.className = `log-entry log-${log.level.toLowerCase()}`;
|
|
div.innerHTML = `
|
|
<span class="timestamp">${log.timestamp}</span>
|
|
<span class="level">${log.level}</span>
|
|
<span class="message">${log.message}</span>
|
|
${log.extra ? `<div class="extra">${JSON.stringify(log.extra)}</div>` : ''}
|
|
`;
|
|
container.appendChild(div);
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to refresh logs:', error);
|
|
}
|
|
}, 5000);
|
|
</script>
|
|
</body>
|
|
</html>
|