从此

Java 高级编程、日志/Logger

综合/最新

Java编程专题Nginx Jetty HTTP C/SJakarta EEAndroid应用开发JDK源码Gradle构建Spring
原则 - 首选内存用量小的Quarkus(GraalVM),次选嵌入式Jetty、Open Liberty InstantOn、Open Liberty非快速启动版。

通用

日志:
    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,特别是复杂日志内容。

其他