11.SpringShell自定义启动信息
2019-01-29 本文已影响0人
Java扫地僧
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