Un nuevo enfoque para ver registros

En un momento tuve que trabajar mucho con troncos. Pueden ser grandes y estar en diferentes servidores. Se requería no encontrar algo específico, sino comprender por qué el sistema no se comporta como debería. Por alguna razón, no había un agregador de registros.





Quería tener un visor de registros que permitiera, en cualquier momento, abrir cualquier archivo sin descargarlo en la máquina local, como el comando less en la consola de Linux. Pero al mismo tiempo, debe haber un conveniente resaltado de texto, como en el IDE, y filtrado de registros por varios parámetros. El filtrado y la búsqueda deberían funcionar por eventos en el registro, y no por líneas, como grep, esto es importante cuando hay entradas de varias líneas, por ejemplo, errores con seguimientos de pila. También debería ser posible ver registros de varios archivos a la vez en una página, congelándolos de acuerdo con la marca de tiempo, incluso si los archivos se encuentran en diferentes nodos.





¡Y descubrí cómo hacer tal utilidad!





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 .





GitHub.





,    â€” ,   .   ,         . ,     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 , .





A veces no hay forma de abrir un puerto en el servidor para ver los registros, solo hay acceso SSH. Puede hacer soporte para el trabajo a través de SSH. La interfaz de usuario web se elevará en la máquina local, se conectará a través de SSH al servidor y lanzará un agente especial allí. El agente aceptará comandos a través del flujo de entrada y devolverá las partes requeridas del registro a través del flujo de salida.





Me encantarĂ­a escuchar tus comentarios.





Proyecto en GitHub: https://github.com/sevdokimov/log-viewer








All Articles