8

私は、glassfish3 AS で実行されている Java プロジェクトのログを記録するために logback を使い始めたところですが、奇妙なことに気付きました。このコード列

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>

誰かが私に何が間違っているのか教えてもらえますか?

4

2 に答える 2

17

エンコーダーの文字セットを定義してみてください:

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

残念ながらドキュメントには記載されていませんが、ソース コードでいつでもプロパティを検索できます。<encoder>を指定すると、 PatternLayoutEncoderがインスタンス化されます。親の LayoutWrappingEncoderに移動すると、メソッドsetCharset()が見つかります。http://logback.qos.ch/xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html#120でわかるように、指定すると使用されます。

于 2012-12-12T14:09:01.690 に答える
0

使用しているテキスト エディタが文字セットをサポートしているかどうかを確認する必要があります。また、ご利用の端末によっても表示文字に影響が出る場合があります。

more文字セットをサポートする必要があるアプリケーションからまたはlessUNIXコマンドを使用Terminalして、文字が正常に印刷されるかどうかを検証することをお 勧めします。

于 2012-11-02T12:25:17.757 に答える