2

以下に示すようにlogging.xmlファイルを設定します。このファイルには、コンソールへの出力と、毎日新しいファイルを取得するローリングファイルが含まれています。

<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${application.home}/logs/application.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>${application.home}/logs/application.%d{yyyy-MM-dd}.log</FileNamePattern>
    </rollingPolicy>

    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>
    </layout>
</appender>
<appender name="A1" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%p %d{ISO8601} %c - %m%n</pattern>
    </encoder>
</appender>
<logger name="javax.faces" level="debug" />
<root level="info">
    <appender-ref ref="A1" />
    <appender-ref ref="FILE" />
</root>
</configuration>

これに関する私の質問は、クラス名も出力するにはどうすればよいですか?Playのドキュメントを読んでみましたが、その答えが見つかりませんでした...実稼働環境では、クラス名も表示されないのは非常に困難です。助けてくれてありがとう!

4

4 に答える 4

2

ドキュメントによると、クラス名を取得するには、パターンで使用する必要があります%class{0}

于 2012-06-19T20:01:42.517 に答える
1

Playframeworkはロギングエンジンとしてslf4jを使用し、次の式の後でもクラス名を出力しません。

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{ISO8601} %-5level [%thread] %logger{36}: %class{0}::%method:%line - %msg%n</pattern>
    </encoder>
</appender>

ただし、修正は次を使用することです。

Logger.underlying()。info( "マイロギングメッセージ");

クラス名とメソッドおよび行番号を取得します。出力:

2015-12-22 17:43:49,969 INFO [play-akka.actor.default-dispatcher-30]アプリケーション:MyController :: get:82-ログメッセージ

于 2015-12-22T12:20:10.117 に答える
-2

ch.qos.logback.classicのPatternLayoutクラスのプライベート実装に問題があるようです。PatternLayout。標準のlog4j実装を使用してみてください。そして、次のように、どのようにロガーインスタンスを取得していますか。privatestatic Logger logger = Logger.getLogger(MyClass.class); ?

于 2012-06-19T04:10:09.927 に答える
-3

ドキュメントを注意深くお読みください。また、play2はログエンジンとしてログバックを使用するため、ログバックの公式Webサイトで詳細を確認してください。

于 2012-06-19T04:32:10.727 に答える