Java : StreamHandler (logging) with Examples
StreamHandler (Java SE 19 & JDK 19) API Examples.
You will find code examples on most StreamHandler methods.
Summary
final StreamHandler handler = new ConsoleHandler();
System.out.println(handler.getLevel()); // INFO
System.out.println(handler.getFormatter()); // java.util.logging.SimpleFormatter@6be968ce
System.out.println(handler.getFilter()); // null
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);
logger.info("TEST LOG!");
// Result
// ↓
//Jan 10, 2023 11:25:49 PM com.example.logging.StreamHandlerTest$1 method
//INFO: TEST LOG!
Constructors
StreamHandler ()
final var outputStream = new ByteArrayOutputStream();
class SampleStreamHandler extends StreamHandler {
SampleStreamHandler() {
super();
setOutputStream(outputStream);
}
}
final var handler = new SampleStreamHandler();
System.out.println(handler.getLevel()); // INFO
System.out.println(handler.getFormatter()); // java.util.logging.SimpleFormatter@76d7e04
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);
logger.info("TEST LOG!");
handler.flush();
System.out.print(outputStream);
// Result
// ↓
//Mar 14, 2022 1:47:29 AM com.example.logging.StreamHandlerTest$1 method
//INFO: TEST LOG!
StreamHandler (OutputStream out, Formatter formatter)
final var outputStream = new ByteArrayOutputStream();
final var handler = new StreamHandler(outputStream, new SimpleFormatter());
System.out.println(handler.getLevel()); // INFO
System.out.println(handler.getFormatter()); // java.util.logging.SimpleFormatter@84e9fc3
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);
logger.info("TEST LOG!");
handler.flush();
System.out.print(outputStream);
// Result
// ↓
//Mar 14, 2022 1:50:07 AM com.example.logging.StreamHandlerTest$2 method
//INFO: TEST LOG!
Methods
void close ()
final var pattern = Path.of("R:", "java-work", "log.txt");
final StreamHandler handler = new FileHandler(pattern.toString());
handler.setFormatter(new SimpleFormatter());
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);
logger.info("BEFORE CLOSE LOG!");
System.out.println(Files.readString(pattern));
// Result
// ↓
//Mar 14, 2022 1:54:26 AM com.example.logging.StreamHandlerTest$3 method
//INFO: BEFORE CLOSE LOG!
handler.close();
logger.info("AFTER CLOSE LOG!");
System.out.println(Files.readString(pattern));
// Result (Not output "AFTER CLOSE LOG!")
// ↓
//Mar 14, 2022 1:54:26 AM com.example.logging.StreamHandlerTest$3 method
//INFO: BEFORE CLOSE LOG!
void flush ()
final var outputStream = new ByteArrayOutputStream();
final var handler = new StreamHandler(outputStream, new SimpleFormatter());
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);
logger.info("TEST LOG!");
System.out.println("-- before flush --");
System.out.println(outputStream);
handler.flush();
System.out.println("-- after flush --");
System.out.println(outputStream);
// Result
// ↓
//-- before flush --
//
//-- after flush --
//Mar 14, 2022 2:30:08 AM com.example.logging.StreamHandlerTest$4 method
//INFO: TEST LOG!
boolean isLoggable (LogRecord record)
final var handler = new StreamHandler(new ByteArrayOutputStream(), new SimpleFormatter());
System.out.println(handler.getLevel()); // INFO
final var ret1 = handler.isLoggable(new LogRecord(Level.WARNING, "WARNING!"));
System.out.println(ret1); // true
final var ret2 = handler.isLoggable(new LogRecord(Level.INFO, "INFO!"));
System.out.println(ret2); // true
final var ret3 = handler.isLoggable(new LogRecord(Level.FINE, "FINE!"));
System.out.println(ret3); // false
final var ret4 = handler.isLoggable(new LogRecord(Level.FINER, "FINER!"));
System.out.println(ret4); // false
final var handler = new StreamHandler(new ByteArrayOutputStream(), new SimpleFormatter());
final var logRecord = new LogRecord(Level.INFO, "TEST LOG!");
System.out.println(handler.isLoggable(logRecord)); // true
handler.close();
System.out.println(handler.isLoggable(logRecord)); // false
void publish (LogRecord record)
final var outputStream = new ByteArrayOutputStream();
final var handler = new StreamHandler(outputStream, new SimpleFormatter()) {
@Override
public synchronized void publish(LogRecord logRecord) {
logRecord.setMessage(logRecord.getMessage() + ":override publish!");
super.publish(logRecord);
}
};
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);
logger.info("TEST LOG!");
handler.flush();
System.out.print(outputStream);
// Result
// ↓
//Mar 14, 2022 2:34:43 AM com.example.logging.StreamHandlerTest$5 method
//INFO: TEST LOG!:override publish!
void setEncoding (String encoding)
System.out.println(Charset.defaultCharset()); // UTF-8
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
final var outputStream = new ByteArrayOutputStream();
final var handler = new StreamHandler(outputStream, new SimpleFormatter());
System.out.println(handler.getEncoding()); // null
logger.addHandler(handler);
logger.info("TEST LOG : 〇△□×");
handler.flush();
// An example of outputting to the console for UTF-8.
System.out.print(outputStream);
// Result
// ↓
//Mar 14, 2022 2:35:20 AM com.example.logging.StreamHandlerTest$6 method
//INFO: TEST LOG : 〇△□×
final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
final var outputStream = new ByteArrayOutputStream();
final var handler = new StreamHandler(outputStream, new SimpleFormatter());
logger.addHandler(handler);
handler.setEncoding("Shift_JIS");
System.out.println(handler.getEncoding()); // Shift_JIS
logger.info("TEST LOG : 〇△□×");
handler.flush();
// An example of outputting to the console for UTF-8.
System.out.print(outputStream);
// Result (Garbled characters)
// ↓
//Mar 14, 2022 2:38:29 AM com.example.logging.StreamHandlerTest$7 method
//INFO: TEST LOG : �Z�����~
protected void setOutputStream (OutputStream out)
Please see StreamHandler().
Methods declared in Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
Please see the link below.