Zu einer Zeit musste ich viel mit Protokollen arbeiten. Sie können groß und auf verschiedenen Servern sein. Es war erforderlich, nichts Bestimmtes zu finden, sondern zu verstehen, warum sich das System nicht so verhält, wie es sollte. Aus irgendeinem Grund gab es keinen Protokollaggregator.
Ich wollte einen Protokoll-Viewer haben, mit dem ich jederzeit jede Datei öffnen kann, ohne sie auf den lokalen Computer herunterzuladen, wie den Befehl less in der Linux-Konsole. Gleichzeitig sollte es jedoch eine bequeme Texthervorhebung wie in der IDE geben und Datensätze nach verschiedenen Parametern filtern. Das Filtern und Suchen sollte nach Ereignissen im Protokoll und nicht nach Zeilen wie grep funktionieren. Dies ist wichtig, wenn mehrzeilige Einträge vorhanden sind, z. B. Fehler mit Stapelspuren. Es sollte auch möglich sein, Datensätze aus mehreren Dateien gleichzeitig auf einer Seite anzuzeigen und sie entsprechend dem Zeitstempel einzufrieren, selbst wenn sich die Dateien auf verschiedenen Knoten befinden.
Und ich habe herausgefunden, wie man so ein Dienstprogramm macht!
Log Viewer - web-, , , Web . , , , , . .
« ? c ». , , 1 3,5, . , , , , , . .
, ; severity , .
, , «+» «…» , , , . . . Java IDE.
: «~.SecurityManager». , «~».
, . , . , Ctrl+C, , .
, , , :
. , , . . , severity, UI :
Severity filter
. , « ». , . , .
« » « », . .
JavaScript. true false.
JavaScript
function isVisibleEvent(text, fields) {
var match = text.match(/Task completed, elapsed time: (\d+)ms$/)
if (!match)
return false // Don't show events not matched the pattern
var time = parseInt(match[1])
return time > 500 // Show only events where elapsed time is more than a threshold
}
, . , , . , , , .
URL, .
,
- — , , , , , , ..
, .
, . , . . , . . log4j, logback . , — issue GitHub, .
— . «.log» , . :
logs = [
{
path: "/opt/my-app/logs/*.log"
},
{
path: ${HOME}"/work/**"
}
]
.log /opt/my-app/logs ~/work .
, — , . , . , Log Viewer. web UI , , Log Viewer LogViewer . - .
. , , « N », N — . , N . , « N T», T — . . , . , / T, , . , . .
, UI , URL :
http://localhost:8111/log?path=/opt/my-app/logs/a.log@hostname1&path=/opt/my-app/logs/b.log@hostname1&path=/opt/my-app/logs/c.log@hostname2
"path" , "@" , . . "@" — . URL, , log-paths = { … }
.
Log Viewer Java Web , . . Maven/Gradle spring context. , log viewer . UI /logs, . Log4j Logback.
, — discussions GitHub.
, . , . , , .
UI. , JSON, , . severity , .
Manchmal gibt es keine Möglichkeit, einen Port auf dem Server zu öffnen, um die Protokolle anzuzeigen. Es gibt nur SSH-Zugriff. Sie können die Arbeit über SSH unterstützen. Die Web-Benutzeroberfläche wird auf dem lokalen Computer angezeigt, stellt über SSH eine Verbindung zum Server her und startet dort einen speziellen Agenten. Der Agent akzeptiert Befehle über den Eingabestream und gibt die erforderlichen Teile des Protokolls über den Ausgabestream zurück.
Ich würde gerne Ihr Feedback hören.
Projekt auf GitHub: https://github.com/sevdokimov/log-viewer