Uma nova abordagem para visualizar registros

Ao mesmo tempo, tive que trabalhar muito com logs. Eles podem ser grandes e estar em servidores diferentes. Era necessário não encontrar algo específico, mas entender por que o sistema não se comportava como deveria. Por algum motivo, não havia agregador de log.





Eu queria ter um visualizador de log que permitisse, a qualquer momento, abrir qualquer arquivo sem baixá-lo para a máquina local, como o comando less no console do linux. Mas, ao mesmo tempo, deve haver destaque de texto conveniente, como no IDE, e registros de filtragem por vários parâmetros. A filtragem e a pesquisa devem funcionar por eventos no log, e não por linhas, como grep, isso é importante quando há entradas de várias linhas, por exemplo, erros com rastreamentos de pilha. Também deve ser possível visualizar registros de vários arquivos ao mesmo tempo em uma página, congelando-os de acordo com o carimbo de data / hora, mesmo se os arquivos estiverem localizados em nós diferentes.





E descobri como fazer esse utilitário!





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 , .





Às vezes, não há como abrir uma porta no servidor para visualizar os logs, há apenas acesso SSH. Você pode fazer suporte para trabalho via SSH. A IU da Web surgirá na máquina local, conectará via SSH ao servidor e iniciará um agente especial lá. O agente aceitará comandos por meio do fluxo de entrada e retornará as partes necessárias do log por meio do fluxo de saída.





Eu adoraria ouvir seu feedback.





Projeto no GitHub: https://github.com/sevdokimov/log-viewer








All Articles