java - mac 上的 logback 返回问号而不是单词

标签 java macos logging glassfish logback

我刚开始使用 logback 记录我在 glassfish3 AS 上运行的 Java 项目,我注意到一些奇怪的事情。这串代码

LOG.error("Вычисление {} уже произведено.", calc);

如果我在 Windows 上运行我的应用程序,则生成正常的预期输出。但是如果我在 Mac 上使用相同的配置,我得到的是问号而不是文字,如下所示:

15:37:29.083 ERROR r.g.g.c.TotalNachController - ?????????? [id=8871] ??? ???????????.

我的 logback 配置是:

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>../logs/logback.log</file>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

有人可以告诉我,我做错了什么吗?

最佳答案

尝试为编码器定义字符集:

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>../logs/logback.log</file>
    <encoder>
        <charset>utf-8</charset>
        <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

遗憾的是它没有在文档中描述,但您始终可以在源代码中查找属性。 Specyfing 实例化 PatternLayoutEncoder。转到其父 LayoutWrappingEncoder,您可以找到方法 setCharset()。指定时使用它,如您在 http://logback.qos.ch/xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html#120 中看到的那样

关于java - mac 上的 logback 返回问号而不是单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13195037/

相关文章:

java - 跨平台的静态记录器,例如Java(小程序)和 Android

php - 将 userid 字段添加到 zend db logger

java - 使用正确的 OOP 模式在 Java 中构建游戏

java - 奇怪的异常 "Invalid receiver type class java.lang.Object; not a subtype of ..."

bash - 列出 fish/bash shell 中所有可用的别名

android - 错误 : declaration conflicts with target of using declaration already in scope

macos - Go:构建时如何显式链接到 OS X 框架?

Django 1.3 日志记录 : 500 errors are not logged

java - AppEnginePlugin : Unsupported major. 次要版本 51.0 - appengine 1.9.17

java - 关于现场可访问性的单元测试实践