Pada suatu waktu, saya harus banyak bekerja dengan kayu gelondongan. Mereka bisa jadi besar dan di server yang berbeda. Itu dituntut untuk tidak menemukan sesuatu yang spesifik, tetapi untuk memahami mengapa sistem berperilaku tidak sebagaimana mestinya. Untuk beberapa alasan, tidak ada agregator log.
Saya ingin memiliki penampil log yang memungkinkan, kapan saja, untuk membuka file apa pun tanpa mengunduhnya ke mesin lokal, seperti perintah less di konsol linux. Tetapi pada saat yang sama, harus ada penyorotan teks yang nyaman, seperti di IDE, dan memfilter record dengan berbagai parameter. Pemfilteran dan pencarian harus bekerja berdasarkan kejadian di log, dan bukan berdasarkan baris, seperti grep, ini penting ketika ada entri multi-baris, misalnya, kesalahan dengan jejak tumpukan. Anda juga dapat melihat record dari beberapa file sekaligus di satu halaman, membekukannya sesuai dengan stempel waktu, meskipun file tersebut terletak di node yang berbeda.
Dan saya menemukan cara membuat utilitas seperti itu!
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 , .
Terkadang tidak ada cara untuk membuka port di server untuk melihat log, hanya ada akses SSH. Anda dapat membuat dukungan untuk pekerjaan melalui SSH. UI Web akan muncul di mesin lokal, terhubung melalui SSH ke server dan meluncurkan agen khusus di sana. Agen akan menerima perintah melalui aliran masukan dan mengembalikan bagian log yang diperlukan melalui aliran keluaran.
Saya ingin mendengar tanggapan Anda.
Proyek di GitHub: https://github.com/sevdokimov/log-viewer