使用 Logback 的日志中不可读的线程名称

Unreadable thread name in logs with Logback

I 运行 Spring 启动应用程序并有以下 logback-spring.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOGS" value="./logs" />

    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/logger.log</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <charset>UTF-8</charset>
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- LOG everything at INFO level -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>
</configuration>

默认 Spring 引导日志工作正常:

2020-07-06 10:24:02,276 INFO  [restartedMain] org.springframework.boot.SpringApplication: No active profile set, falling back to default profiles: default

但是当应用程序尝试记录传入信息时,我会得到:

2020-07-06 10:24:24,604 INFO  [Áèáëèîòåêà èãð Google Play Telegram Executor] ru.miroha.bot.GooglePlayGameBot: Hello, Test!

在控制台和文件中相同。

Google Play Telegram Executor 是合法的,但 Áèáëèîòåêà èãð 是什么?

如果我删除此 logback.xml 配置和 运行 默认 Spring 机器人记录器,此消息将如下所示:

2020-07-06 10:22:00.418  INFO 6796 --- [legram Executor] ru.miroha.bot.GooglePlayGameBot          : Hello!

怎么了?

编码文本来自您配置中的 %C{1.}。也许您的对象的调用者故意混淆了 class 名称? class 是从库中调用该行吗?

您需要那种深度的来电记录吗?与 %C{0} 相比,您想要记录的来电者?

有关来电记录的更多信息: http://logback.qos.ch/manual/layouts.html

我找到了真正的问题。此线程名称包含我的电报机器人名称(我猜是 api 功能),并且此 api 无法正确处理西里尔字母表。