Mac上的logback返回问号而不是单词

时间:2012-11-02 12:14:04

标签: 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] ??? ???????????.

我的回溯配置是:

<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>

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

2 个答案:

答案 0 :(得分:16)

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

<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 &lt; encoder&gt; 实例化PatternLayoutEncoder。升级到其父 LayoutWrappingEncoder ,您可以找到方法 setCharset()。如果已指定,则会在http://logback.qos.ch/xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html#120

中看到

答案 1 :(得分:0)

您需要检查使用的文本编辑器是否支持您的字符集。使用的终端也可能影响显示的字符。

我建议使用来自more应用程序的lessTerminal UNIX命令来支持您的字符集,以验证字符是否打印正常。