Hai Saya mencoba menerapkan java logging di aplikasi saya. Saya ingin menggunakan dua penangan. Seorang penangan file dan pengendali konsol saya sendiri. Kedua penangan saya bekerja dengan baik. Logging saya dikirim ke file dan ke konsol. Logging saya juga dikirim ke penangan konsol default, yang tidak saya inginkan. Jika Anda menjalankan kode saya, Anda akan melihat dua baris tambahan dikirim ke konsol. Saya tidak ingin menggunakan penangan konsol default. Apakah ada yang tahu cara menonaktifkan pengendali konsol default. Saya hanya ingin menggunakan dua penangan yang telah saya buat.
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))
sebagai penggantib.append(arg0.getMessage())
. DenganformatMessage
metode Anda membuat formatter Anda kompatibel dengan penggunaanpublic void log(Level level, String msg, Object param1)
dan metode serupa.