的logback在Mac上返回问号代替单词(logback on a mac returns que

2019-08-02 06:09发布

我刚开始使用的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>

可能有人请告诉我,我在做什么错?

Answer 1:

尝试定义字符集编码器:

<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 <编码器> instantize PatternLayoutEncoder。 马上要到其父LayoutWrappingEncoder你可以找到方法setCharset()。 当指定使用它,你可以在看http://logback.qos.ch/xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html#120



Answer 2:

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

我建议使用moreless UNIX命令从Terminal应用程序,应该支持你的字符集,以验证字符是否打印确认。



文章来源: logback on a mac returns question marks instead of words