Standard libraries
libs8Logging
- Path
- pkg13libs/libs8Logging.java
- Package
- pkg13libs
- Study order
- 8
- Run
- Single-file source launch
- Command
- java pkg13libs/libs8Logging.java
There is no in-browser runner. This is the file from the curriculum, unchanged.
1package pkg13libs;2 3import java.util.logging.ConsoleHandler;4import java.util.logging.Formatter;5import java.util.logging.Level;6import java.util.logging.LogRecord;7import java.util.logging.Logger;8 9/*10 * libs8Logging.java11 * -----------------12 * Logging with java.util.logging (JUL) — the built-in, dependency-free logger.13 *14 * DEFINITION:15 * A Logger records events at severity levels. Handlers decide where logs go16 * (console, file); Formatters decide how they look; Levels filter what's kept.17 * Real apps often use SLF4J + Logback/Log4j2, but the concepts are identical.18 *19 * KEY POINTS:20 * - Levels: SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST.21 * - setLevel() on the logger AND handler controls what is emitted.22 * - Use lambda/supplier overloads to avoid building messages that get filtered.23 * - Never log secrets; prefer parameterized messages over string concatenation.24 */25public class libs8Logging {26 27 private static final Logger log = Logger.getLogger(libs8Logging.class.getName());28 29 public static void main(String[] args) {30 // Configure a custom one-line formatter on a console handler31 log.setUseParentHandlers(false); // don't double-print via root logger32 ConsoleHandler handler = new ConsoleHandler();33 handler.setLevel(Level.ALL);34 handler.setFormatter(new Formatter() {35 @Override public String format(LogRecord r) {36 return String.format("[%-7s] %s%n", r.getLevel(), r.getMessage());37 }38 });39 log.addHandler(handler);40 log.setLevel(Level.ALL);41 42 // Log at every level43 log.severe("database connection lost");44 log.warning("disk usage at 85%");45 log.info("user 42 logged in");46 log.config("cache size = 256MB");47 log.fine("entering method process()");48 49 // Lazy message (only built if FINE is enabled) — avoids wasted work50 log.fine(() -> "expensive detail: " + expensiveComputation());51 52 // Log an exception with a stack trace53 try {54 throw new IllegalStateException("simulated failure");55 } catch (Exception e) {56 log.log(Level.SEVERE, "operation failed", e);57 }58 59 // Raise the threshold: now only WARNING+ are shown60 System.out.println("\n-- raising level to WARNING --");61 log.setLevel(Level.WARNING);62 log.info("this INFO is now suppressed");63 log.warning("this WARNING still shows");64 }65 66 static String expensiveComputation() { return "computed-" + (2 * 21); }67}