I tried to use it

application.yml


logging:
   pattern:
    console: %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss. SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} 

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>error2Sms</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>error2Sms</name>
    <description>error2Sms</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!-- 去掉默认配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <!-- 去掉默认配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--        ssh连接-->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.31</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>32.0.0-android</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <!--            <scope>annotationProcessor</scope>-->
        </dependency>

        <!-- 引入log4j2依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!--阿里短信-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>alibabacloud-dysmsapi20170525</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.example.error2sms.Error2SmsApplication</mainClass>
                    <skip>false</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

The error message is

04:18:32.082 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '%' that cannot start any token. (Do not use % for indentation)
 in 'reader', line 17, column 14:
        console: %clr(%d{${LOG_DATEFORMAT_PATTERN ... 
                 ^

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:439) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:248) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:665) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:165) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.comments.CommentEventsCollector$1.peek(CommentEventsCollector.java:59) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.comments.CommentEventsCollector$1.peek(CommentEventsCollector.java:45) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.comments.CommentEventsCollector.collectEvents(CommentEventsCollector.java:140) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.comments.CommentEventsCollector.collectEvents(CommentEventsCollector.java:119) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeScalarNode(Composer.java:214) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:184) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeKeyNode(Composer.java:310) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:301) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:286) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:188) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:314) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:305) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:286) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:188) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:314) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:305) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:286) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:188) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:115) ~[snakeyaml-1.29.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:135) ~[snakeyaml-1.29.jar:?]
    at org.springframework.boot.env.OriginTrackedYamlLoader$OriginTrackingConstructor.getData(OriginTrackedYamlLoader.java:103) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:514) ~[snakeyaml-1.29.jar:?]
    at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:198) ~[spring-beans-5.3.23.jar:5.3.23]
    at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:166) ~[spring-beans-5.3.23.jar:5.3.23]
    at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:88) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.StandardConfigDataLoader.load(StandardConfigDataLoader.java:54) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.StandardConfigDataLoader.load(StandardConfigDataLoader.java:36) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataLoaders.load(ConfigDataLoaders.java:107) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataImporter.load(ConfigDataImporter.java:128) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataImporter.resolveAndLoad(ConfigDataImporter.java:86) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataEnvironmentContributors.withProcessedImports(ConfigDataEnvironmentContributors.java:116) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataEnvironment.processInitial(ConfigDataEnvironment.java:240) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataEnvironment.processAndApply(ConfigDataEnvironment.java:227) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:102) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.postProcessEnvironment(ConfigDataEnvironmentPostProcessor.java:94) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:102) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:87) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.23.jar:5.3.23]
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66) ~[spring-boot-2.6.13.jar:2.6.13]
    at java.util.ArrayList.forEach(ArrayList.java:1259) ~[?:1.8.0_412]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:65) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:343) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:301) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-2.6.13.jar:2.6.13]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.6.13.jar:2.6.13]
    at com.example.error2sms.Error2SmsApplication.main(Error2SmsApplication.java:10) ~[classes/:?]

How should I use %clr?

Comment From: philwebb

Thanks for getting in touch, but it feels like this is a question that would be better suited to Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use GitHub issues only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add some more details if you feel this is a genuine bug.

Comment From: philwebb

I suspect this is a yaml parsing error and you need to put the console pattern in quotes.

Comment From: linhaiwen

I suspect this is a yaml parsing error and you need to put the console pattern in quotes.我怀疑这是一个yaml解析错误,你需要把控制台模式放在引号里。

I tried to put him in quotation marks, but he appeared quite ridiculous

logging:
  pattern:
    console: "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss. SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"

logging


%clr(-2024-09-05 14:54:09. 986){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(m.example.error2sms.Error2SmsApplication){cyan} %clr(:){faint} Starting Error2SmsApplication using Java 1.8.0_412 on DESKTOP-LF8UDOM with PID 4348 (D:\javawork\error2Sms\target\classes started by alin in D:\javawork\error2Sms)
-%clr(-2024-09-05 14:54:10. 002){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(m.example.error2sms.Error2SmsApplication){cyan} %clr(:){faint} The following 1 profile is active: "prod"
-%clr(-2024-09-05 14:54:11. 459){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(boot.web.embedded.tomcat.TomcatWebServer){cyan} %clr(:){faint} Tomcat initialized with port(s): 8080 (http)
-%clr(-2024-09-05 14:54:11. 477){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(org.apache.catalina.core.StandardService){cyan} %clr(:){faint} Starting service [Tomcat]
-%clr(-2024-09-05 14:54:11. 477){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(org.apache.catalina.core.StandardEngine ){cyan} %clr(:){faint} Starting Servlet engine: [Apache Tomcat/9.0.68]
-%clr(-2024-09-05 14:54:11. 753){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(e.ContainerBase.[Tomcat].[localhost].[/]){cyan} %clr(:){faint} Initializing Spring embedded WebApplicationContext
-%clr(-2024-09-05 14:54:11. 753){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(ntext.ServletWebServerApplicationContext){cyan} %clr(:){faint} Root WebApplicationContext: initialization completed in 1676 ms
-%clr(-2024-09-05 14:54:12. 394){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(boot.web.embedded.tomcat.TomcatWebServer){cyan} %clr(:){faint} Tomcat started on port(s): 8080 (http) with context path ''
-%clr(-2024-09-05 14:54:12. 400){faint} %clr(- INFO) %clr(4348){magenta} %clr(---){faint} %clr([           main]){faint} %clr(m.example.error2sms.Error2SmsApplication){cyan} %clr(:){faint} Started Error2SmsApplication in 3.148 seconds (JVM running for 14.799)
-

Comment From: wilkinsona

That looks like Logback’s pattern syntax to me. You need to use Log4j2’s.

If you have any further questions, please follow up on Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use GitHub issues only for bugs and enhancements.

Comment From: linhaiwen

That looks like Logback’s pattern syntax to me. You need to use Log4j2’s.

If you have any further questions, please follow up on Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use GitHub issues only for bugs and enhancements.

OK,I will do it this way