Salve, sto cercando di implementare la registrazione java nella mia applicazione. Voglio usare due gestori. Un gestore di file e il mio gestore di console. Entrambi i miei gestori funzionano bene. La mia registrazione viene inviata a un file e alla console. La mia registrazione viene inviata anche al gestore della console predefinito, che non desidero. Se esegui il mio codice vedrai due righe aggiuntive inviate alla console. Non voglio utilizzare il gestore della console predefinito. Qualcuno sa come disabilitare il gestore della console predefinito. Voglio usare solo i due gestori che ho creato.
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
import java.util.Date;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class LoggingExample {
private static Logger logger = Logger.getLogger("test");
static {
try {
logger.setLevel(Level.INFO);
Formatter formatter = new Formatter() {
@Override
public String format(LogRecord arg0) {
StringBuilder b = new StringBuilder();
b.append(new Date());
b.append(" ");
b.append(arg0.getSourceClassName());
b.append(" ");
b.append(arg0.getSourceMethodName());
b.append(" ");
b.append(arg0.getLevel());
b.append(" ");
b.append(arg0.getMessage());
b.append(System.getProperty("line.separator"));
return b.toString();
}
};
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
LogManager lm = LogManager.getLogManager();
lm.addLogger(logger);
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
logger.info("why does my test application use the standard console logger ?\n" + " I want only my console handler (Handler ch)\n " + "how can i turn the standard logger to the console off. ??");
}
}
b.append(formatMessage(arg0))
posto dib.append(arg0.getMessage())
. Con ilformatMessage
metodo stai rendendo compatibile il tuo formattatore con l'usopublic void log(Level level, String msg, Object param1)
e metodi simili.