这是日志框架的 PatternLayout,和 IDEA 没关系。
问题中第二张图应该是 spring boot 的默认日志格式,spring boot 默认使用 logback,其默认配置在 spring-boot 的 jar 包中——
spring-boot-x.x.x.RELEASE.jar!\org\springframework\boot\logging\logback\defaults.xml
在其中可以看到这样一行:
这就是对控制台日志输出格式的定义,当然这里只是定义格式,使用的时候是在同目录下 console-appender.xml 中引用的,具体可以去看一下。
defaults.xml 中还有一个 FILE_LOG_PATTERN 的定义——
其被 file-appender.xml 引用,这种带格式的日志输出不光用于控制台输出,输出到文件中的日志一样可以使用这种方式定义格式。
一个完整的 logback 自定义格式的 appender 可以是下面这样的——
...
%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
...
如果使用 log4j2 的话也类似——
spring-boot 对 log4j2 也有默认的格式定义,同样在 spring-boot 的 jar 包中——
spring-boot-x.x.x.RELEASE.jar!\org\springframework\boot\logging\log4j2\log4j2.xml 以及 log4j2-file.xml
其中各个占位参数的详细描述可以参考日志框架的官方文档——
下面简单罗列几个 logback 的(log4j2 大同小异)——%m:代码中设置的的日志消息。
%p:日志级别,即 DEBUG,INFO,WARN,ERROR,FATAL 等。
%c:产生该日志的类名,默认是类的全名,可以通过设置长度来输出缩写形式。
%t:产生该日志的线程名。
%n:一个回车换行符,Windows 平台为“\r\n”,Unix 平台为“\n”。
%d:日志时间点的日期或时间,默认格式为 ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss.SSS},输出类似:2019-10-19 18:10:28.921。
%l:日志事件的发生位置,包括类名、发生的线程,以及在代码中的行数。