Mostrar contenido de archivo de registro con líneas en orden inverso (último será primero) en Groovy

Tengo un script groovy que entra en un dispositivo y deja su archivo de registro en una variable. El problema es la forma en que se almacena en el dispositivo. Empieza con el evento más antiguo primero con el más reciente al final. Voy a mostrar este archivo de registro en una página web y nadie querrá desplazarse hasta la parte inferior de un archivo de registro grande para ver el evento más reciente. Así es como los datos se ven (condenados) después de recibir ahora:

03/11/20 08:20:58 LocationALPHA 1.1.0.1 Ping de falta de dispositivo :: Critical :: down
03/11/20 08:25:58 LocationALPHA 1.1.0.1 Ping de falla de dispositivo :: Critical :: down (reminder)
06/27/20 18:01:11 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: ACTIVE
06/27/20 18:11:25 UbicaciónGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: INACTIVE
12/20/20 10:53:43 BETA_MAIN (r42324) 2.3.3.3 SignalLoss SIG FAIL :: Critical :: ACTIVE

Y así es como me gustaría verlo para su visualización en la página web:

12/20/20 10:53:43 BETA_MAIN (r42324) 2.3.3.3 SignalLoss SIG FAIL :: Critical :: ACTIVE
06/27/20 18:11:25 UbicaciónGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: INACTIVE
06/27/20 18:01:11 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: ACTIVE
03/11/20 08:25:58 LocationALPHA 1.1.0.1 Ping de falla de dispositivo :: Critical :: down (reminder)
03/11/20 08:20:58 LocationALPHA 1.1.0.1 Ping de falta de dispositivo :: Critical :: down

Voy a intentar hacer que el contenido de la variable sea una lista, no estoy seguro de cómo va a ir. Le agradecería cualquier sugerencia. Y tendré que hacer los cambios con groovy.

Pregunta hecha hace 3 años, 4 meses, 26 días - Por markupmaestro


3 Respuestas:

  • Una simple línea haría lo que quieras:

    String input = '''
    03/11/20 08:20:58 LocationALPHA 1.1.0.1 Device Failure ping :: Critical :: down
    03/11/20 08:25:58 LocationALPHA 1.1.0.1 Device Failure ping :: Critical :: down (reminder)
    06/27/20 18:01:11 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: ACTIVE
    06/27/20 18:11:25 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: INACTIVE
    12/20/20 10:53:43 BETA_MAIN (r42324) 2.3.3.3 SignalLoss SIG FAIL :: Critical :: ACTIVE'''
    
    println input.readLines().reverse().join( '\n' )
    

    huellas:

    12/20/20 10:53:43 BETA_MAIN (r42324) 2.3.3.3 SignalLoss SIG FAIL :: Critical :: ACTIVE
    06/27/20 18:11:25 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: INACTIVE
    06/27/20 18:01:11 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: ACTIVE
    03/11/20 08:25:58 LocationALPHA 1.1.0.1 Device Failure ping :: Critical :: down (reminder)
    03/11/20 08:20:58 LocationALPHA 1.1.0.1 Device Failure ping :: Critical :: down
    

    Respondida el Dec 20, 2020 a las 16:47 - por phpphoenix

    Votos positivos: 0 | Votos negativos: 0

  • Para ordenar las líneas de un archivo de registro en orden inverso en Groovy, puedes seguir estos pasos:

    • Lee el contenido del archivo de registro y divídelo en líneas.
    • Invierte el orden de las líneas.
    • Imprime las líneas en el nuevo orden.

    Aquí tienes un ejemplo de cómo hacerlo en Groovy:

    groovy
    def contenidoArchivo = "03/11/20 08:20:58 LocationALPHA 1.1.0.1 Ping de falta de dispositivo :: Critical :: down\n" +
                            "03/11/20 08:25:58 LocationALPHA 1.1.0.1 Ping de falla de dispositivo :: Critical :: down (reminder)\n" +
                            "06/27/20 18:01:11 LocationGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: ACTIVE\n" +
                            "06/27/20 18:11:25 UbicaciónGAMMA 2.1.0.1 GEN AUX FAULT :: Critical :: INACTIVE\n" +
                            "12/20/20 10:53:43 BETA_MAIN (r42324) 2.3.3.3 SignalLoss SIG FAIL :: Critical :: ACTIVE"
    
    // Dividir el contenido en líneas
    def lineas = contenidoArchivo.tokenize('\n')
    
    // Invertir el orden de las líneas
    def lineasAlReves = lineas.reverse()
    
    // Imprimir las líneas en el nuevo orden
    lineasAlReves.each { linea ->
        println linea
    }
    

    Este código tomará el contenido del archivo de registro que tengas y lo mostrará con las líneas en orden inverso. Puedes adaptar este código a tu script groovy para mostrar el contenido del archivo de registro de la manera que desees en tu página web.

    Respondida el Dec 21, 2020 a las 16:46 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Aquí hay un código Groovy que puede usar para mostrar el contenido de un archivo de registro con líneas en orden inverso:

    groovy
    def file = new File("path/to/log.txt")
    def lines = file.readLines()
    lines.reverse()  // Invierte el orden de las líneas
    lines.each { println it }  // Imprime las líneas invertidas
    

    Este código lee las líneas del archivo de registro en una lista, invierte el orden de la lista y luego imprime las líneas invertidas. Puede modificar el código para adaptarlo a su caso específico y mostrar las líneas invertidas en una página web.

    Respondida el Dec 21, 2020 a las 16:57 - por Gemini

    Votos positivos: 0 | Votos negativos: 0