2016-06-20 13:25:01 -04:00
|
|
|
package cl.cromer.estructuras;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
2016-07-05 10:03:13 -04:00
|
|
|
import java.io.PrintWriter;
|
|
|
|
import java.io.StringWriter;
|
2016-06-20 13:25:01 -04:00
|
|
|
import java.util.logging.FileHandler;
|
|
|
|
import java.util.logging.Level;
|
|
|
|
import java.util.logging.Logger;
|
|
|
|
import java.util.logging.SimpleFormatter;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Esta clase es para configurar el logeo de la aplicación.
|
2016-06-29 00:33:19 -04:00
|
|
|
*
|
2016-06-20 13:25:01 -04:00
|
|
|
* @author Chris Cromer
|
|
|
|
*/
|
|
|
|
public class Logs {
|
2016-07-05 10:03:13 -04:00
|
|
|
/**
|
|
|
|
* Estado de depuración.
|
|
|
|
*/
|
2016-07-21 20:47:05 -04:00
|
|
|
static final public boolean DEBUG = false;
|
2016-07-05 10:03:13 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Tipos de depuración.
|
|
|
|
*/
|
|
|
|
private enum DEBUG_TIPOS {
|
|
|
|
ARCHIVO,
|
|
|
|
CONSOLA
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Tipo de depuración a usar.
|
|
|
|
*/
|
|
|
|
static final public DEBUG_TIPOS DEBUG_TIPO = DEBUG_TIPOS.ARCHIVO;
|
|
|
|
|
2016-07-03 11:28:26 -04:00
|
|
|
/**
|
|
|
|
* Nombre de archivo para guardar los logs.
|
|
|
|
*/
|
|
|
|
static final public String LOGFILE = "./EDD.log";
|
2016-06-20 13:25:01 -04:00
|
|
|
|
2016-07-03 11:28:26 -04:00
|
|
|
/**
|
|
|
|
* Nombre del log.
|
|
|
|
*/
|
|
|
|
static final public String LOGNAME = "EDD";
|
2016-06-20 13:25:01 -04:00
|
|
|
|
2016-07-05 10:03:13 -04:00
|
|
|
public FileHandler fileHandler;
|
|
|
|
|
2016-07-03 11:28:26 -04:00
|
|
|
/**
|
2016-07-05 10:03:13 -04:00
|
|
|
* Crear un logger usando {@value #LOGNAME}. Guardar los logs en el archivo de {@value #LOGFILE}. Pero solo logear si {@value #DEBUG} es vardad.
|
2016-07-03 11:28:26 -04:00
|
|
|
*/
|
|
|
|
public Logs() {
|
2016-07-05 10:03:13 -04:00
|
|
|
if (DEBUG && DEBUG_TIPO == DEBUG_TIPOS.ARCHIVO) {
|
2016-07-03 11:28:26 -04:00
|
|
|
Logger logger = Logger.getLogger(LOGNAME);
|
|
|
|
try {
|
2016-07-05 10:03:13 -04:00
|
|
|
fileHandler = new FileHandler(LOGFILE, true);
|
2016-07-03 11:28:26 -04:00
|
|
|
logger.addHandler(fileHandler);
|
|
|
|
SimpleFormatter formatter = new SimpleFormatter();
|
|
|
|
fileHandler.setFormatter(formatter);
|
|
|
|
}
|
2016-07-05 10:03:13 -04:00
|
|
|
catch (SecurityException | IOException exception) {
|
|
|
|
exception.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Cerrar el archivo.
|
|
|
|
*/
|
|
|
|
public void close() {
|
|
|
|
if (DEBUG && DEBUG_TIPO == DEBUG_TIPOS.ARCHIVO) {
|
|
|
|
if (fileHandler != null) {
|
|
|
|
fileHandler.close();
|
2016-07-03 11:28:26 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-06-20 13:25:01 -04:00
|
|
|
|
2016-07-07 14:23:04 -04:00
|
|
|
/**
|
|
|
|
* Agregar un log al logger con un mensaje.
|
|
|
|
*
|
|
|
|
* @param mensaje String: El mensaje de lo que pasó.
|
|
|
|
*/
|
|
|
|
static public void log(String mensaje) {
|
|
|
|
if (DEBUG) {
|
|
|
|
if (DEBUG_TIPO == DEBUG_TIPOS.ARCHIVO) {
|
|
|
|
Logger.getLogger(LOGNAME).log(Level.INFO, mensaje);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
System.out.println(mensaje + "\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-07-03 11:28:26 -04:00
|
|
|
/**
|
2016-07-05 10:03:13 -04:00
|
|
|
* Agregar un log al logger con un mensaje.
|
2016-07-03 11:28:26 -04:00
|
|
|
*
|
|
|
|
* @param level Level: El tipo de error o mensaje que ha sido generado.
|
|
|
|
* @param mensaje String: El mensaje de lo que pasó.
|
|
|
|
*/
|
|
|
|
static public void log(Level level, String mensaje) {
|
2016-07-05 10:03:13 -04:00
|
|
|
if (DEBUG) {
|
|
|
|
if (DEBUG_TIPO == DEBUG_TIPOS.ARCHIVO) {
|
|
|
|
Logger.getLogger(LOGNAME).log(level, mensaje);
|
|
|
|
}
|
|
|
|
else {
|
2016-07-05 10:27:26 -04:00
|
|
|
System.out.println(mensaje + "\n");
|
2016-07-05 10:03:13 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Agregar un log al logger y agregar el stack trace.
|
|
|
|
*
|
|
|
|
* @param level Level: El tipo de error o mensaje que ha sido generado.
|
|
|
|
* @param exception String: El mensaje de lo que pasó.
|
|
|
|
*/
|
|
|
|
static public void log(Level level, Exception exception) {
|
|
|
|
if (DEBUG) {
|
|
|
|
if (DEBUG_TIPO == DEBUG_TIPOS.ARCHIVO) {
|
|
|
|
StringWriter stringWriter = new StringWriter();
|
|
|
|
PrintWriter printWriter = new PrintWriter(stringWriter);
|
|
|
|
exception.printStackTrace(printWriter);
|
|
|
|
Logger.getLogger(LOGNAME).log(level, stringWriter.toString());
|
|
|
|
printWriter.close();
|
|
|
|
try {
|
|
|
|
stringWriter.close();
|
|
|
|
}
|
|
|
|
catch (IOException ioexception) {
|
|
|
|
Logs.log(Level.SEVERE, ioexception);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
exception.printStackTrace();
|
|
|
|
}
|
2016-07-03 11:28:26 -04:00
|
|
|
}
|
|
|
|
}
|
2016-06-20 13:25:01 -04:00
|
|
|
}
|