通用
日志:
static final LazyConstant<System.Logger> LOGGER = LazyConstant.of(() -> {
var logger = System.getLogger("global"); // Logger.getGlobal()
var loggerImpl = LogManager.getLogManager().getLogger("global");
loggerImpl.setLevel(Level.ALL);
// [可选]控制台输出
var ch = new ConsoleHandler();
ch.setLevel(Level.ALL);
loggerImpl.addHandler(ch);
try {
var fh = new FileHandler("global.log");
fh.setLevel(Level.ALL);
fh.setFormatter(new SimpleFormatter()); // 默认 XML。
loggerImpl.addHandler(fh);
} catch (IOException e) {
e.printStackTrace(System.err);
}
return logger;
}); //用处 LOGGER.get().log(System.Logger.Level.ALL, "msg..."); LOGGER.get().log(System.Logger.Level.ALL, "ex", ex);
if (logger.isLoggable(Logger.Level.INFO)) {
logger.log(Logger.Level.INFO, "Msg: {0}", Arrays.toString(args));
}
logger.log(Logger.Level.INFO, () -> "Msg: " + Arrays.toString(args)); // 日志级别不匹配则不执行 Lambda,特别是复杂日志内容。