【问题标题】:How to fix problem with cyrillic symbols in logbook如何解决日志中西里尔符号的问题
【发布时间】:2021-12-05 13:59:47
【问题描述】:

我刚刚添加 实施 'org.zalando:logbook-parent:2.14.0'
我的项目基于 'org.springframework.boot' 版本 '2.4.3' 和 Java 11。

在 application.yml 中的下一个属性:

logbook:
  format:
    style: http
logging:
  level:
    org:
      hibernate:
        SQL: DEBUG
      springframework:
        web: DEBUG
        security: INFO
      zalando:
        logbook: TRACE

来自 spring 的日志还可以,看起来像 "bankName": "ПОЧТА банк" 但 zalando.logbook: "bankName":"ПОЧТРбанк"

我在 build.gradle 旁边添加,但没有任何变化。

 tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }

我需要做什么来解决这个编码问题?

提前致谢。

编辑:阅读日志我使用 Kibana + Elastic

【问题讨论】:

标签: java spring logback


【解决方案1】:

当字符串变长时,这通常意味着某些翻译步骤接收到的字节旨在被视为 UTF-8,但正在使用 ISO-8859 或 Cp1252 或一些类似的老化编码来读取。

这是完整的过程。每次我们从字节翻转到字符或反之亦然时,都会涉及到字符集编码。如果即使在一个步骤中涉及错误的编码,最终结果也会完全被破坏。它们都必须对齐(它们都必须是 UTF-8)。请注意,所有文件本质上都是字节而不是字符

  1. 代码编辑器。
  2. 编译器。
  3. “记录器客户端”/记录器输出系统。
  4. 用于查看日志文件的工具。

代码编辑器

您在源代码中编写了明确的非 ascii 字符。 java源文件是字节,所以当你输入一个西里尔字符时,它在你的java源文件中显示为一个西里尔字符,但是当你点击文件/保存时会发生什么?你需要检查你的编辑器。打开编辑器,打开一个带有西里尔字符的文件,然后检查编码。在 Eclipse 上,您将单击“文件”菜单并在文件打开时单击“属性”选项。编码列在“资源”面板底部的“文本文件编码”部分中。

编译器

Javac 需要读取该文件。您在 gradle 文件中粘贴的选项 (options.encoding = 'UTF-8') 可以解决此问题。

查看

正如我所说,所有文件都是字节,所以当您打开任何文本文件时,您必须选择一种编码!许多智能文本编辑器会大胆猜测,但有些只是假设某种编码。检查您的编辑器 - 通常可以选择文件所在的编码。文本文件本身不包含所使用的编码,除非在极少数情况下(通常是可以以所有 UTF 风格编码的 BOM,但仅此而已UTF 特有的,通常不添加)。 您的代码完全有可能没有任何问题,您只是在使用没有被告知将其读取为 UTF-8 的文本编辑器查看它

黑匣子

如果以上都不是,哎呀,那么这将变得更加困难:日志在 JVM 中作为字符串发送(这意味着,幸运的是,编码不是一件事,并且不会发生混乱),直到它们到达一个所谓的“客户端”或“日志后端”,然后对它们做任何事情:日志系统是抽象概念。处理程序故意只是'给你,这个级别的日志消息,做你想做的事'。如果您想在电视上用闪烁的灯光显示它们,请随意编写一个日志客户端来执行此操作。

您的日志客户端最终将日志消息写入文件,因此,它将字符串转换为字节,因此,它正在应用编码。

您找到的其他答案表明 zalando 的日志库使用 servlet 运行程序返回的编码,并且该答案解释了如何确保这是 UTF-8。我猜你是这样做的。

那么我该如何解决这个问题呢?

完成上述所有 4 个步骤:

  • 确保您的编辑器处于 UTF-8 模式。
  • 确保正在使用您在问题中粘贴的 gradle 块。
  • 确保实施其他答案的设置,以确保您的 servlet 运行器设置为 UTF-8。
  • 确保您用于查看日志文件的内容配置为使用 UTF-8。

如果您已完成所有这些事情,问题应该会消失。

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2011-05-10
    • 2011-05-31
    • 1970-01-01
    • 2018-02-19
    • 2020-10-12
    • 2010-11-02
    • 1970-01-01
    • 2016-05-10
    相关资源
    最近更新 更多