在 Intellij 中获取 Spring 引导颜色控制台日志记录?
Getting Spring Boot color console logging working within Intellij?
有没有人想出如何在 Intellij Idea 中为 Spring 启动应用程序获取颜色输出?
使用 Mac、Intellij Idea 14 和 Spring Boot v1.2.2.RELEASE,您只需设置:
spring.output.ansi.enabled=ALWAYS
我已将其添加为 VM 选项 (-Dspring.output.ansi.enabled=ALWAYS
)。效果很好!
在任何条件下启用日志记录颜色支持的通用方法 Gradle:
bootRun {
def console = System.console() != null
if (! console) { console = System.getenv()["TERM"].startsWith("xterm") }
if (console) systemProperties 'spring.output.ansi.enabled': 'always'
}
在 application.properties 中使用(例如)以下行:
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n
如果你想要几乎类似于 Spring 引导,你可以使用这样的模式:
%date %highlight(%-5level) [%12.12thread] %cyan(%-40.40logger{40}) : %msg %n
- 从市场安装名为 Ansi Console 的 Eclipse 插件。
- spring.output.ansi.enabled=始终@应用程序。properties/yml。
- 运行 应用程序作为 spring 启动,您将在控制台中看到彩色日志。
只需将这些属性添加到 application.properties for IntelliJ IDEA:
spring.main.banner-mode=off
spring.output.ansi.enabled=ALWAYS
使用较新版本的 IntelliJ (2019) 和 Spring Boot (2.0) 当 运行 IntelliJ 颜色记录中的 Spring Boot 应用程序正确输出时,但是当 运行 单元测试未检测到控制台,因此未使用颜色记录。强制 Spring Boot 始终认为有一个控制台,即使它找不到以下设置 属性:
spring.output.ansi.console-available=true
与 spring.output.ansi.enabled=ALWAYS
不同,它会留下检测代码 运行(所以如果你在 windows 上,则没有颜色)但会导致在测试中发生颜色记录(无论是在 IntelliJ 中还是在运行 专家)。
这是我的问题来源和解决方案。
我有两个日志记录框架的实现,我在应用程序启动后立即收到通知。您甚至可以拥有更多——所有这些都来自各种依赖项。所以消息是:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:.../slf4j-simple-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:.../logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
如您所见,找到两个指向两个记录器框架的绑定。
他们每个人都使用自己的颜色模式。那么 Spring boot chosen 是哪一个?根据此 tutorial 它将从列表中获取最后一个。这意味着您的颜色模式现在取决于一些令人愉快的随机选择(没有时间研究列表的组合方式)。
在收集到有关找到的日志记录框架绑定的信息后,我依次从我的依赖项中删除了多余的。
您可以构建一个 Maven 树来找到将不需要的 SLF4j 绑定引入项目的依赖项,然后在 Maven 或 gradle 配置文件中将其排除。
因为我正在使用 gradle,所以我刚刚将此配置添加到我的 build.gradle
configurations {
all {
exclude group: 'org.slf4j', module: 'slf4j-simple' // no ansi colors in terminal (:
}
}
此排除删除不需要的绑定并将我的 ansi 颜色返回到 intellij idea 终端(因为我的项目中只剩下一个日志记录框架 - 而这个有彩色输出)。
必须注意:如果我通过 mac os 终端启动我的应用程序
java -jar fileName.jar
命令我没有彩色输出。
yml:
spring:
output:
ansi:
enabled: ALWAYS
有没有人想出如何在 Intellij Idea 中为 Spring 启动应用程序获取颜色输出?
使用 Mac、Intellij Idea 14 和 Spring Boot v1.2.2.RELEASE,您只需设置:
spring.output.ansi.enabled=ALWAYS
我已将其添加为 VM 选项 (-Dspring.output.ansi.enabled=ALWAYS
)。效果很好!
在任何条件下启用日志记录颜色支持的通用方法 Gradle:
bootRun {
def console = System.console() != null
if (! console) { console = System.getenv()["TERM"].startsWith("xterm") }
if (console) systemProperties 'spring.output.ansi.enabled': 'always'
}
在 application.properties 中使用(例如)以下行:
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n
如果你想要几乎类似于 Spring 引导,你可以使用这样的模式:
%date %highlight(%-5level) [%12.12thread] %cyan(%-40.40logger{40}) : %msg %n
- 从市场安装名为 Ansi Console 的 Eclipse 插件。
- spring.output.ansi.enabled=始终@应用程序。properties/yml。
- 运行 应用程序作为 spring 启动,您将在控制台中看到彩色日志。
只需将这些属性添加到 application.properties for IntelliJ IDEA:
spring.main.banner-mode=off
spring.output.ansi.enabled=ALWAYS
使用较新版本的 IntelliJ (2019) 和 Spring Boot (2.0) 当 运行 IntelliJ 颜色记录中的 Spring Boot 应用程序正确输出时,但是当 运行 单元测试未检测到控制台,因此未使用颜色记录。强制 Spring Boot 始终认为有一个控制台,即使它找不到以下设置 属性:
spring.output.ansi.console-available=true
与 spring.output.ansi.enabled=ALWAYS
不同,它会留下检测代码 运行(所以如果你在 windows 上,则没有颜色)但会导致在测试中发生颜色记录(无论是在 IntelliJ 中还是在运行 专家)。
这是我的问题来源和解决方案。
我有两个日志记录框架的实现,我在应用程序启动后立即收到通知。您甚至可以拥有更多——所有这些都来自各种依赖项。所以消息是:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:.../slf4j-simple-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:.../logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
如您所见,找到两个指向两个记录器框架的绑定。 他们每个人都使用自己的颜色模式。那么 Spring boot chosen 是哪一个?根据此 tutorial 它将从列表中获取最后一个。这意味着您的颜色模式现在取决于一些令人愉快的随机选择(没有时间研究列表的组合方式)。
在收集到有关找到的日志记录框架绑定的信息后,我依次从我的依赖项中删除了多余的。
您可以构建一个 Maven 树来找到将不需要的 SLF4j 绑定引入项目的依赖项,然后在 Maven 或 gradle 配置文件中将其排除。
因为我正在使用 gradle,所以我刚刚将此配置添加到我的 build.gradle
configurations {
all {
exclude group: 'org.slf4j', module: 'slf4j-simple' // no ansi colors in terminal (:
}
}
此排除删除不需要的绑定并将我的 ansi 颜色返回到 intellij idea 终端(因为我的项目中只剩下一个日志记录框架 - 而这个有彩色输出)。
必须注意:如果我通过 mac os 终端启动我的应用程序
java -jar fileName.jar
命令我没有彩色输出。
yml:
spring:
output:
ansi:
enabled: ALWAYS