Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Personalizar Registro de Eventos con Clases

Nuestros ethical hackers explican que son las bitácoras, por que es importante utilizarlas y cual es la manera adecuada de generar dichos informes usando clases de Java y así, poder conocer los acontecimientos relevantes que han afectado la ejecución del programa.

Necesidad

Personalizar el registro de eventos con clases.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido.

  1. Se dispone de una aplicación en Java conforme con la especificación del lenguaje 1.4.2 o superior.

Solución

Una bitácora o log es una grabación secuencial en un archivo o en una base de datos de todos los acontecimientos (eventos o acciones) que afectan a un proceso particular (aplicación, actividad de una red informática, entre otros). De esta forma constituye una evidencia del comportamiento del sistema.

El uso de bitácoras puede servir para:

  • Análisis forense.

  • Detección de intrusos.

  • Depuración de errores.

  • Motorización.

  • Cumplir con las leyes establecidas.

  • Auditoría.

Por otro lado, cada evento que desea grabarse en la bitácora tiene un nivel. Este nivel indica la prioridad o urgencia de dicho evento. Los niveles en orden descendente de urgencia son:

  • SEVERE.

  • WARNING.

  • INFO.

  • CONFIG.

  • FINE.

  • FINER.

  • FINEST.

    1. En Java es posible realizar la configuración del logger especificando una clase donde se establezcan las propiedades que este debe de tener. Para lo cual es necesario utilizar el parámetro Djava.util.logging.config.class cuyo valor será usado por la clase java.util.logging.LogManager. La clase LogManager es la encargada de crear el logger con las propiedades que se definan.

    2. Se debe crear una clase que se encargue de inicializar la configuración del logger donde se obtenga una referencia a root logger y se le asigne el manejador de eventos ConsoleHandler con el fin de que los eventos sean registrados en una salida estándar.

      config.java
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      import java.util.logging.ConsoleHandler;
      import java.util.logging.Level;
      import java.util.logging.Logger;
      
      public class Config {
        public Config() {
          System.out.println("Configuring...");
          Logger logger = Logger.getLogger("");
          ConsoleHandler ch = new ConsoleHandler();
          ch.setLevel(Level.INFO);
          logger.addHandler(ch);
          logger.setLevel(Level.ALL);
        }
      }
      
    3. Después, se debe crear una clase encargada de solicitarle al logger el registro de algunos eventos de diferentes niveles. En esta nueva clase, es necesario invocar el método estático Logger.getLogger pasándole como parámetro el nombre del logger.

      cli.java
    4. Por último, se registran algunos eventos de diferentes niveles.

    5. Se compilan las clases.

      compile.bash
      1
      2
      $ javac CLI.java
      $ javac Config.java
      
    6. Para finalizar, se ejecuta la clase CLI utilizando el parámetro Djava.util.logging.config.class pasándole como valor la clase Config. Una vez ejecutada la clase se obtiene como salida la información de los eventos registrados.

      1
      2
      3
      4
      5
      6
      7
      8
      $ java -Djava.util.logging.config.class=Config CLI
      
      Configuring...
      Nov 6, 2018 9:29:05 AM CLI main
      INFO: Procesing...
      Nov 6, 2018 9:29:05 AM CLI main
      WARNING: Hello... we've got a problem
      java.lang.Exception at CLI.main(CLI.java:14)
      

Descargas

Puedes descargar el código fuente pulsando en los siguientes enlaces:

Config.java Clase Config.

CLI.java Clase CLI.




Haz un comentario

Estado de los servicios - Términos de Uso