我刚开始使用的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 <编码器> instantize PatternLayoutEncoder。 马上要到其父LayoutWrappingEncoder你可以找到方法setCharset()。 当指定使用它,你可以在看http://logback.qos.ch/xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html#120
您需要检查使用的文本编辑器支持您的字符集。 也用过的终端可能会影响所显示的字符也是。
我建议使用more
或less
UNIX命令从Terminal
应用程序,应该支持你的字符集,以验证字符是否打印确认。