如题,最近几个JBolt内部成员在问我,JBolt平台启动的时候,输出的环境信息很哇塞,想修改成自己公司的信息,增加点别的信息,如何搞?
效果看下图:
这个图里展示了好几个输出类型:
1、LOGO 品牌标识 域名信息 jbolt.cn
2、平台名称和版本 JBolt Platform Pro 4.1.2
3、JFinal JBolt_core Undertow等依赖版本信息 JVM版本信息等
4、启动服务的访问地址端口
5、日志信息
一、logo 品牌标识等输出
请看这个文章描述。
二、定制Undertow Server
package cn.jbolt.core.server; import com.jfinal.config.JFinalConfig; import com.jfinal.core.Const; import com.jfinal.server.undertow.UndertowConfig; import com.jfinal.server.undertow.UndertowServer; import cn.jbolt.core.consts.JBoltConst; import cn.jbolt.core.util.JBoltConsoleUtil; import io.undertow.Version; /** * JBolt Undertow服务器封装 * * @ClassName: JBoltServer * @author: JFinal学院-小木 QQ:909854136 * @date: 2021年8月7日 * */ public abstract class JBoltServer extends UndertowServer { protected JBoltServer(UndertowConfig undertowConfig) { super(undertowConfig); } /** * 获取平台名称 * @return */ public abstract String getProjectName(); /** * 获取版本 * @return */ public abstract String getProjectVersion(); @Override public synchronized void start() { if (configConsumer != null) { configConsumer.accept(config); configConsumer = null; // 配置在整个生命周期只能调用一次 } loadCommandLineParameter(); try { JBoltConsoleUtil.printJboltcn(); String projectName = getProjectName(); String projectVersion = getProjectVersion(); System.out.println("-----------------------------------"); System.out.println("Starting " + projectName + " " + projectVersion + "..."); System.out.println("JVM : " + System.getProperty("java.version")); System.out.println("JFinal : " + Const.JFINAL_VERSION); System.out.println("JBolt Core : " + JBoltConst.JBOLT_VERSION); System.out.println("Undertow Server : " + Version.getVersionString()); System.out.println("JFinal-Undertow : " + version); System.out.println("Http URL : http://" + config.getHost() + ":" + config.getPort() + getContextPathInfo()); if (config.isSslEnable()) { System.out.println("Https URL : https://" + config.getHost() + ":" + config.getSslConfig().getPort() + getContextPathInfo()); } System.out.println("-----------------------------------"); long start = System.currentTimeMillis(); doStart(); System.out.println("-----------------------------------"); System.out.println(projectName + " " + projectVersion + " Startup Success in " + getTimeSpent(start) + " seconds(^_^)"); System.out.println("-----------------------------------"); /** * 使用 kill pid 命令或者 ctrl + c 关闭 JVM 时,调用 UndertowServer.stop() 方法, 以便触发 * JFinalConfig.onStop(); * * 注意:下方代码严格测试过,只支持 kill pid 不支持 kill -9 pid */ Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { JBoltServer.this.stop(); } }); } catch (Exception e) { e.printStackTrace(); stopSilently(); // 支持在 doStart() 中抛出异常后退出 JVM,例如端口被占用,否则在 linux 控制台 JVM 并不会退出 System.exit(1); } } @Override public synchronized void stop() { if (started) { started = false; } else { return; } System.out.println("-----------------------------------"); System.out.println("Shutdown JBolt Server ......"); System.out.println("-----------------------------------"); long start = System.currentTimeMillis(); try { if (hotSwapWatcher != null) { hotSwapWatcher.exit(); } doStop(); } catch (Exception e) { e.printStackTrace(); stopSilently(); } finally { System.out.println("-----------------------------------"); System.out.println("Shutdown Complete in " + getTimeSpent(start) + " seconds. See you later (^_^)"); System.out.println("-----------------------------------"); } } }
这样就可以完美实现一个定制化的平台启动输出了。
三、日志标准化输出解决方案
【分享】使用JFinal4.8中的Slf4J日志门面配置,具体实现用Log4j2
加入并使用JBolt极速开发平台,获得JFinal最佳实践极速开发体验。
JBolt平台slogan:
省心,省事儿,降本增效,极速开发,JFinal社区600家企业的共同选择!
推荐: