【问题标题】:How to restore terminal color to default after spring boot banner has printed春季启动横幅打印后如何将终端颜色恢复为默认值
【发布时间】:2018-07-01 15:49:30
【问题描述】:

Spring boot 通过banner.txt 提供了一个支持颜色的可配置横幅,例如

${AnsiColor.RED}
  __  __         ____          _   ____                              
 |  \/  |_   _  |  _ \ ___  __| | | __ )  __ _ _ __  _ __   ___ _ __ 
 | |\/| | | | | | |_) / _ \/ _` | |  _ \ / _` | '_ \| '_ \ / _ \ '__|
 | |  | | |_| | |  _ <  __/ (_| | | |_) | (_| | | | | | | |  __/ |   
 |_|  |_|\__, | |_| \_\___|\__,_| |____/ \__,_|_| |_|_| |_|\___|_|   
         |___/                                                       
${AnsiColor.BRIGHT_WHITE}

不幸的是,横幅的最终颜色为 Spring Boot 应用程序的所有输出设置了颜色。 BRIGHT_WHITE 的最终颜色对于默认的 linux 背景BLACK 来说是可以的,但我也在 intellij 控制台中运行我的应用程序,它有一个白色背景,所以在横幅之后我看不到任何输出。

横幅打印到标准输出后,如何将终端前景色和背景色恢复为横幅打印前的颜色?


将我的 Intellij 终端窗口的背景颜色设置为 BLACK 不是解决方案,因为这需要本地自定义 IDE 以产生正常/预期的行为,以及其他团队成员的行为可能不喜欢或不想要。使用 Intellij 的默认设置在本地运行应用程序会令人惊讶,并想知道为什么应用程序没有产生任何输出。

同样,Linux 终端也是如此,它可能没有默认颜色设置 - 终端颜色也是个人选择,绝不应该是操作要求。

【问题讨论】:

    标签: spring-boot terminal-color


    【解决方案1】:

    试试${AnsiColor.DEFAULT}。我没有尝试过,但发现了一些示例,它们以自定义颜色开始横幅并以默认颜色结束。例如herehereherehere

    【讨论】:

    • 这行得通。我什至假设/猜测应该存在 AnsiColor.DEFAULT,但 Intellij 没有在编辑器中将其显示为代码完成选项,所以我停止了这种想法。现在已经尝试过了,即使在输入 ${AnsiColor.DEFAULT} 之后,Intellij 也会抱怨(仅警告)它 Cannot resolve property 'AnsiColor.DEFAULT'。但是,当我打开课程AnsiColor 时,第一个条目是DEFAULT。 Intellij 中显然存在一个错误,它似乎不知道枚举实例 AnsiColor.DEFAULT!
    【解决方案2】:

    ${AnsiStyle.NORMAL} 为我工作(在 Spring Boot 2 中测试)。

    IntelliJ IDEA(用 2019.3 测试)也知道 ${AnsiStyle.NORMAL} 并且不给出警告。

    ${AnsiColor.RED}
      __  __         ____          _   ____                              
     |  \/  |_   _  |  _ \ ___  __| | | __ )  __ _ _ __  _ __   ___ _ __ 
     | |\/| | | | | | |_) / _ \/ _` | |  _ \ / _` | '_ \| '_ \ / _ \ '__|
     | |  | | |_| | |  _ <  __/ (_| | | |_) | (_| | | | | | | |  __/ |   
     |_|  |_|\__, | |_| \_\___|\__,_| |____/ \__,_|_| |_|_| |_|\___|_|   
             |___/                                                       
    ${AnsiStyle.NORMAL}
    

    【讨论】:

      【解决方案3】:

      ${AnsiColor.DEFAULT} 完美运行,但它在 IntelliJ 中显示了一些不相关的警告。

      ${Ansi.DEFAULT} 也可以工作,并且没有警告。
      它也提供所有其他颜色,${Ansi.BLUE}${Ansi.RED} 等。

      来源:https://mkyong.com/spring-boot/spring-boot-custom-banner-example
      适用于 SpringBoot 2.5.5 和 IntelliJ 2021.2.3

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 2014-06-26
        • 2020-12-24
        相关资源
        最近更新 更多