SpringBoot 自定义打印服务信息和 Banner 图!

2023年 7月 26日 30.1k 0

Banner

使用 IDEA 编译器初始化一个 SpringBoot 项目,并尝试将项目在本地启动后,控制台会输出服务的启动信息,包括服务的 Banner 图案以及相关的日志信息。

默认 Banner

正如 SpringBoot 项目初始化 所配置的,初始化运行 SpringBoot 项目后,控制台会打印出如下的 Banner 信息。

  • SpringBoot 默认 Banner 图内容,图中可见当前 SpringBoot 版本为 V2.7.6

image.png

Banner 配置

Banner 图案是 SpringBoot 服务启动时默认打印的日志内容,可以通过 SpringBoot 启动配置设置关闭 Banner 打印。

  • 在启动类 main 方法中设置 application.setBannerMode(Banner.Mode.OFF),可以关闭 Banner 图。

image.png

如果认为 SpringBoot 项目启动 Banner 比较官方,并且代表使用的开发框架是 Spring,在实际进行项目开发时,我们可以根据需要切换为自己项目的图案,或者可以自定义为其他图案。

  • 自定义 Banner 图案

image.png

自定义 Banner 流程

自定义项目启动 Banner 图案,只需要按照如下流程进行操作:

  • 确定项目的 Banner 图案对应的字符串,如 springspring-boot

  • 在 ASCII Generator 或 degraeve.com 网站中生成字符串名称对应的 Banner 图案

    • ASCII Generator 主要用来对文本字符生成 Banner 图案
    • degraeve.com 则可以对引用图片生成对应的艺术图案
  • image.png

    image.png

  • 在项目的 src/main/resources 目录下新建 banner.txt 文件,将生成的图案结果复制到文件中

  • 重新启动服务查看 Banner 信息

  • image.png

    服务信息

    日志打印服务信息

    除了对项目 Banner 图自定义外,还可以在项目启动时控制台输出服务的基础信息,如服务名称、访问地址和端口号等信息。

    通过打印的服务地址信息,可以方便的在日志中观察服务启动状态,并且在本地环境开发调试时直接访问对应服务地址。

    image.png

    本地 IDEA 中,可以直接点击地址或服务地址到浏览器中进行访问。

    自定义输出配置

    服务配置信息打印通过读取 SpringBoot 配置信息,并配合解析本地服务 ip 地址实现打印。

  • 定义服务配置信息
  • server:
      port: 7001
    spring:
      application:
        name: tools
    
  • 启动时读取配置并打印输出
  • @SpringBootApplication
    public class ToolsApplication {
        private static Logger logger = LoggerFactory.getLogger(ToolsApplication.class);
    
        public static void main(String[] args) throws UnknownHostException {
            SpringApplication application = new SpringApplication(ToolsApplication.class);
            ConfigurableApplicationContext applicationContext = application.run(args);
            
            // 获取本地 ip 地址
            String ip = InetAddress.getLocalHost().getHostAddress();
            
            // 获取服务配置文件,name、port、以及全局服务路径
            Environment env = applicationContext.getEnvironment();
            String name = env.getProperty("spring.application.name");
            String port = env.getProperty("server.port");
            String path = Optional.ofNullable(env.getProperty("server.servlet.context-path")).orElse("");
            
            // 打印输出
            logger.info("n----------------------------------------------------------nt" +
                    "Application " + name +" is running! Access URLs:nt" +
                    "Local 访问网址: tthttp://localhost:" + port + path + "nt" +
                    "External 访问网址: thttp://" + ip + ":" + port + path + "nt" +
                    "----------------------------------------------------------");
        }
    }
    
  • 启动服务,打印服务信息
  • image.png

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论