Log4j configuracion recomendada.


Configuración recomendada para un buen registro de log con slf4j

Introducción
Una buena configuración del log es fundamental para la identificación de problemas o comportamientos no esperados. Nosotros consideramos este un punto importante en los procesos de desarrollo, pruebas y puesta en producción de las diversas aplicaciones tanto como web, bash y/o aplicaciones de escritorio.

La idea de esta publicación es indicar la configuración más óptima de slf4j en el archivo log4j.xml y además excluyendo información relevante en la escritura de la información de log.

Entorno :
1.- Java SE 1.7 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html?ssSourceSiteId=otnes)
2.- IDE Netbeans (https://netbeans.org/)
3.- Apache-Tomcat 7 (https://tomcat.apache.org/download-70.cgi)
4,- Apache-Maven (https://maven.apache.org/download.cgi)
5.- slf4j (http://www.slf4j.org/)
6.- Sistema Operativo (Linux Ubuntu)

Que es slf4j?

La mejor descripción la podremos ver el https://es.wikipedia.org/wiki/SLF4J
Slf4j es una abstracción de varios frameworks de logging que permite elegir el  framework concreto en tiempo de despliegue.

Las implementaciones son :
  • java.util.logging
  • log4j
  • logback
  • tinylog

En general utilizamos slf4j ya que dispone de varias características. La Principal y la que nombra a esta herramienta lo indica su nombre “Simple Logging Facade for Java”.

Consideraciones.

1.- Modificamos el pom.xml donde incluimos dentro del tag dependencies :
   
       
           javax
           javaee-web-api
           6.0
           provided
       
       
           org.slf4j
           slf4j-log4j12
           1.6.4
           compile
       
       
           org.slf4j
           slf4j-api
           1.6.4
           compile
       
   

2.- Crear archivo de configuración log4j.xml

log.png









3.- Contenido del log4j.xml

1.- Vamos a revisar el contenido de appender solo lo mas importantes :
File : Ruta y nombre del archivo que se generará.
/tmp : En este caso como usamos linux ya existe el directorio /tmp
${logTomcat} : En este caso en el inicio del tomcat definimos un parámetros que identifica a este.
debug_menu_web.log : Al final completamos el nombre del archivo de log que se generará.

MaxFileSize : Tamaño máximo en kilobytes de los archivos generados. Por ejemplo 5000kb equivalen a 5 megas

MaxBackupIndex : Cantidad máxima de respaldo de archivos de log ejemplo de máximo de 7 días. Importante ya que depende mucho del disco disponible en el servidor.

ConversionPattern : Patrón en el que se escribirán las líneas de log.

%d{ISO8601} %-5p (%t) [%c{1}(%M:%L)] %m%n

Descripcion :
%d{ISO8601} – displays the date and time in the ISO format (see earlier post about this norm).
%-5p – the log level (such as DEBUG, INFO, WARN, …), formatted to occupy five columns (I like when things keep in line).
%t – the name of the thread logging this line.
%c{1} – the name of the class calling the logger (the {1} argument is there to restrict the number of packages displayed; {2} would display one package level before the class name, {3} would display two package levels, … and %c without the brackets would display the full package and class names).
%M – the method.
%L – the line number.
%m – the message to log.
%n – begin a new line.

logConfig.png




Conclusión.

Codigo : https://git-scm.com/

Notas :
Nunca esta demas una herramienta que te permite migrar tu antigua aplicación a slf4j. Aquí les dejamos el link del manual.

Referencia :
https://archive.keyboardplaying.org/2013/06/24/log4j-conversion-pattern/

Levenshtein en postgreSQL


Muy Simple. Como utilizar levenshtein en postgres por ejemplo en buscar direcciones.

select
dire_calle_predio,
comuna_cod,
numero ,
levenshtein( dire_calle_predio , 'PUNTA ARENAS') as distancia
from direccion
order by distancia asc limit 10;