9. 定制
本节介绍如何自定义 shell。
9.1. 主题
当前的终端实现功能丰富,通常可以显示 其他只是纯文本的东西。例如,可以将文本的样式设置为粗体或具有不同的颜色。终端能够 显示 Unicode 表中的各种字符,例如 emoji,这些字符通常是 用于使 shell 输出更漂亮。
Spring Shell 通过其主题框架支持这些,该框架包含两个部分, 首先,样式可用于更改文本类型,其次,数字如何 显示一些字符。然后将这两者组合在一起作为一个主题。
有关主题内部的更多信息,请参阅 主题。
默认主题已命名,但可以使用 property 进行更改。其他名为 uses 的内置主题
没有颜色的样式,并尽量不使用任何特殊数字。default spring.shell.theme.name dump |
通过覆盖设置来修改现有样式。
static class MyStyleSettings extends StyleSettings {
@Override
public String highlight() {
return super.highlight();
}
}
通过覆盖设置来修改现有图窗。
static class MyFigureSettings extends FigureSettings {
@Override
public String error() {
return super.error();
}
}
要创建新主题,请创建 并提供您自己的样式和数字实现。ThemeSettings
static class MyThemeSettings extends ThemeSettings {
@Override
public StyleSettings styles() {
return new MyStyleSettings();
}
@Override
public FigureSettings figures() {
return new MyFigureSettings();
}
}
注册一个新的 Bean,您可以在其中返回自定义名称和主题名称。Theme
ThemeSettings
@Configuration
static class CustomThemeConfig {
@Bean
Theme myTheme() {
return new Theme() {
@Override
public String getName() {
return "mytheme";
}
@Override
public ThemeSettings getSettings() {
return new MyThemeSettings();
}
};
}
}
如果要创建
JLine 样式的字符串,如果需要,还可以进行
主题人物更漂亮。ThemeResolver
@Autowired
private ThemeResolver resolver;
void resolve() {
String resolvedStyle = resolver.resolveStyleTag(StyleSettings.TAG_TITLE);
// bold,fg:bright-white
AttributedStyle style = resolver.resolveStyle(resolvedStyle);
// jline attributed style from expression above
String resolvedFigure = resolver.resolveFigureTag(FigureSettings.TAG_ERROR);
// character i.e. U+2716 Heavy Multiplication X Emoji, cross
}
9.2. 日志记录
默认情况下,Spring Boot 应用程序会将消息记录到控制台中,该控制台 至少 很烦人,并且还可能混合 shell 命令的输出。 幸运的是,有一种简单的方法可以通过引导属性来指示记录更改。
通过将控制台日志记录的模式定义为空值来完全静音控制台日志记录。
logging:
pattern:
console:
如果你需要来自 shell 的日志,请将它们写入一个文件中。
logging:
file:
name: shell.log
如果您需要不同的日志级别。
logging:
level:
org:
springframework:
shell: debug
不支持将 contiguration 属性作为命令行选项传递,但 例如,您可以使用 Boot 支持的任何其他方式。
$ java -Dlogging.level.root=debug -jar demo.jar
$ LOGGING_LEVEL_ROOT=debug java -jar demo.jar
在 GraalVM 映像中,编译期间会锁定映像设置,这意味着 您无法在运行时更改日志级别。 |