Logging.java
package com.morphiqlabs.wavelet.util;
/**
* Lightweight helper for obtaining System.Logger instances and parsing log levels.
*
* <p>Usage:
* <pre>{@code
* private static final System.Logger LOG = Logging.getLogger(MyClass.class);
* LOG.log(System.Logger.Level.INFO, "Hello");
* }</pre>
*
* <p>Level configuration is handled by the underlying logging implementation. For simple
* filtering, you can use the system property {@code -Dvectorwave.log.level=INFO} or the
* environment variable {@code VECTORWAVE_LOG_LEVEL}. Libraries embedding VectorWave may
* bridge {@link java.lang.System.Logger} to their preferred logging system.</p>
*/
public final class Logging {
private Logging() {
throw new AssertionError("No instances");
}
/** Returns a logger for the given class. */
public static System.Logger getLogger(Class<?> cls) {
return System.getLogger(cls.getName());
}
/** Returns a logger for the given name. */
public static System.Logger getLogger(String name) {
return System.getLogger(name);
}
/** Parses a textual level into a System.Logger.Level, defaulting to INFO. */
public static System.Logger.Level parseLevel(String level) {
if (level == null) return System.Logger.Level.INFO;
switch (level.trim().toUpperCase()) {
case "TRACE":
case "FINEST": return System.Logger.Level.TRACE;
case "DEBUG":
case "FINER": return System.Logger.Level.DEBUG;
case "FINE": return System.Logger.Level.DEBUG;
case "INFO": return System.Logger.Level.INFO;
case "WARN":
case "WARNING": return System.Logger.Level.WARNING;
case "ERROR":
case "SEVERE": return System.Logger.Level.ERROR;
case "OFF": return System.Logger.Level.OFF;
default: return System.Logger.Level.INFO;
}
}
/** Reads desired level from system property or env var (implementation-defined). */
public static System.Logger.Level configuredLevel() {
String prop = System.getProperty("vectorwave.log.level");
if (prop != null) return parseLevel(prop);
String env = System.getenv("VECTORWAVE_LOG_LEVEL");
return parseLevel(env);
}
}