Basta que pregunte para dar con la solución:
- Los mensajes se pueden dirigir a un archivo, sólo hay que añadir al LOGGER un handler.
boolean append = true;
FileHandler fh = new FileHandler("TestLog.log", append);
fh.setFormatter(new SimpleFormatter());
LOGGER.addHandler(fh);
He hecho alguna modificación en el código que se expone en la web del link de dichos apuntes para hacer pruebas. Sólo tendrías que añadir al directorio del programa el archivo diccionario con palabras para que pueda cargarse (está en la web).
package milogger;
import java.io.*;
import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.logging.FileHandler;
import java.util.logging.SimpleFormatter;
class Diccionario {
private static final Logger LOGGER = Logger.getLogger("TestLog");
private static final int MAX = 100;
// diccionario de hasta MAX palabras
// ordenadas alfabéticamente
private static final int primera = 0;
private int ultima = -1;
static {
try {
boolean append = true;
FileHandler fh = new FileHandler("TestLog.log", append);
//fh.setFormatter(new XMLFormatter());
fh.setFormatter(new SimpleFormatter());
LOGGER.addHandler(fh);
e.printStackTrace();
}
}
/**
* Carga el diccionario leyendo palabras de un fichero.
*
* @param fichero A razón de una palabra por línea.
*/
LOGGER.config("cargamos el diccionario con " + fichero);
try {
for (String linea
= br.
readLine(); linea
!= null; linea
= br.
readLine()) { if (ultima >= MAX - 1) {
continue;
} // no caben más palabras
palabras[++ultima] = linea;
}
LOGGER.config(ultima + 1 + " palabras");
LOGGER.log(Level.SEVERE, "creacion: ", e);
}
}
LOGGER.info("comienza la busqueda de " + p);
int resultado = busca(p, primera, ultima);
LOGGER.info("resultado de la busqueda: " + resultado);
return resultado;
}
private int busca
(String p,
int a,
int z
) { LOGGER.fine("busca entre " + palabras[a] + " y " + palabras[z]);
if (a <= z) {
int m = (a + z) / 2;
LOGGER.finer("probamos con " + palabras[m]);
int donde = p.compareTo(palabras[m]);
LOGGER.finer("donde= " + donde);
if (donde == 0) {
return m;
}
if (donde < 0) {
return busca(p, a, m - 1);
}
if (donde > 0) {
return busca(p, m + 1, z);
}
}
LOGGER.warning("no encontrado");
return -1;
}
/**
* Programa principal.
*
* @param args diccionario palabra
*/
public static void main
(String[] args
) //if (args.length != 2) {
// System.err.println("uso: java Diccionario diccionario palabra");
// System.exit(1);
//}
Diccionario diccionario = new Diccionario("diccionario");
String palabra
= "hipoglúcido"; int posicion = diccionario.busca(palabra);
System.
out.
println(palabra
+ ": " + posicion
); }
}