2

私は Play 2.1.1 で自分のプロジェクトにカスタム ロギング構成を使用しています。そのため、conf ディレクトリに application-logger.xml を作成しました。これは魅力のように機能します。

ここで、logback エバリュエーター (公式ドキュメント: http://logback.qos.ch/manual/layouts.html#Evaluatorsに基づく) をログ構成ファイルに追加して、特定の場合にのみ %caller 情報を出力したいと考えました。

<configuration>

<evaluator name="DISP_CALLER_EVAL">
    <expression>logger.contains("a specific string")</expression>
</evaluator>

<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home}/logs/application.log</file>
    <encoder>
        <pattern>%date - [%level] - %logger in %thread in caller: %caller{3, DISP_CALLER_EVAL}
            %message%n%xException%n</pattern>
    </encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
    </encoder>
</appender>

<logger name="play" level="INFO" />
<logger name="application" level="DEBUG" />

<root level="ERROR">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>

ただし、エバリュエーターのスニペットをログ構成に追加した後に再生サーバーを起動すると、ログはまったく記録されず、サーバーはコードをまったく実行しません。サーバーがクラッシュしたようです。

Play 2.1.1 でエバリュエーター ルールを使用したロギング構成の実例を持っている人はいますか?

4

1 に答える 1

0

これを試して

<evaluator name="DISP_CALLER_EVAL" class="ch.qos.logback.classic.boolex.GEventEvaluator">
    <expression>logger.contains("a specific string")</expression>
</evaluator>
于 2014-02-18T09:46:06.863 に答える