11.SpringShell自定义启动信息

SpringShell 应用启动时, 默认会输出Spring Shell 的启动信息. 对于一个专业的shell来讲, 输出Spring相关的启动信息, 肯定是不合适的, 我们需要输出我们系统相关的信息.

1. SpringShell 默认启动信息

SpringShell 的启动信息一共包括三部分: SpringBoot banner, SpringBppt启动类日志, shell命令提示符.

# SpringBoot banner
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2.RELEASE)

# SpringBooot 启动类日志
2019-01-25 16:05:59.260  INFO 14751 --- [           main] o.z.l.s.shell.SpringShellApplication     : Starting SpringShellApplication v0.0.1-SNAPSHOT on zongf-E570 with PID 14751 (/data/idea/learn-spring/spring-shell/target/spring-shell-0.0.1-SNAPSHOT.jar started by zongf in /data/idea/learn-spring/spring-shell/target)
2019-01-25 16:05:59.265  INFO 14751 --- [           main] o.z.l.s.shell.SpringShellApplication     : No active profile set, falling back to default profiles: default
2019-01-25 16:06:00.561  INFO 14751 --- [           main] o.z.l.s.shell.SpringShellApplication     : Started SpringShellApplication in 1.79 seconds (JVM running for 2.263)

# shell 命令提示符
shell:>

2. 自定义启动信息

对于SpringShell 应用默认的三部分启动信息, 我们需要分别进行处理.

2.1 自定义banner

  • 由于SpringShell 应用本身就是一个SpringBoot 应用, 因此借助于SpringBoot应用自定义Banner方案即可实现.
  • 修改SpringBoot应用banner 只需要在resources文件夹中添加banner.txt文件即可, 可以自定义banner内容, 样式, 颜色等, 具体文件内容格式非本博客核心内容, 故笔者不在此详述.
  • 笔者指定banner 内容, 字体颜色, 版本号等信息.
  • 文字banner生成网站:http://patorjk.com/software/taag/#p=display&f=Slant&t=MYSHELL
${AnsiColor.BRIGHT_YELLOW} ${AnsiStyle.BOLD}
Welcom to :
    __  _____  _______ __  __________    __
   /  |/  /\ \/ / ___// / / / ____/ /   / /
  / /|_/ /  \  /\__ \/ /_/ / __/ / /   / /
 / /  / /   / /___/ / __  / /___/ /___/ /___
/_/  /_/   /_//____/_/ /_/_____/_____/_____/

Version: ${application.version}
Author: zongf
Date: 2019-01-26

2.2 自定义系统日志

SpringBoot启动类日志级别为info, 我们只需要将启动类日志提升为warn即可. 直接修改application.yml 文件即可. 笔者修改为:

# pattern 并没有实际用处, 这是笔者测试时用的.
logging:
  pattern:
    console: "%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread]-%msg%n"
  level:
    org.zongf.learn.spring.shell.SpringShellApplication: warn

2.3 自定义命令提示符

SpringShell 自定义命令提示符在笔者之前的博客中已经提及了, 新增自定义命令提示符组件即可.

@Component
public class CustomPromptProvider implements PromptProvider {

    @Override
    public AttributedString getPrompt() {

        // 获取主机名称
        String hostName = getHostName();

        // 设置命令提示符文字
        String promot = "spring@" + hostName + "> ";

        // 设置命令提示符字体样式
        AttributedStyle promotStyle = AttributedStyle.BOLD.foreground(AttributedStyle.GREEN);

        // 返回命令提示符
        return new AttributedString(promot, promotStyle);
    }

    /**
     * @Description: 获取主机名称
     * @return: String 主机名称
     * @author: zongf
     * @time: 2019-01-26 08:58:45
     */
    private String getHostName(){
        String hostName = "";
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            hostName = inetAddress.getHostName();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return hostName;
    }
}

3. 启动SpringShell 应用

重新打包后启动应用, 会发现启动信息完全实现了定制化.

$ ./bin/spring-shell.sh

Welcom to :
    __  _____  _______ __  __________    __
   /  |/  /\ \/ / ___// / / / ____/ /   / /
  / /|_/ /  \  /\__ \/ /_/ / __/ / /   / /
 / /  / /   / /___/ / __  / /___/ /___/ /___
/_/  /_/   /_//____/_/ /_/_____/_____/_____/

Version: 0.0.1-SNAPSHOT
Author: zongf
Date: 2019-01-26


spring@zongf-E570> add 1 2
3

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,951评论 0 5
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,126评论 2 89
  • 原文链接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao阅读 10,187评论 0 9
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,223评论 4 61
  • 这一圈圈年轮,又到年末,又会惶恐,只有复盘能治疗。哈哈哈是广告啊,是因为了中了复盘的毒。 不知道怎么写复盘作业,只...
    木小叶阅读 1,768评论 2 0