使用 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 无法正确处理西里尔字母表。
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 无法正确处理西里尔字母表。