scala 2.9 と akka 2.0 で分散データベースを実装しています。私の現在の問題は、標準のログ出力を stdout ではなくファイルにリダイレクトしたいということです。SLF4J や SLF4S は使いたくありません。ログ出力をリダイレクトする簡単な方法はありますか?
質問する
5162 次
1 に答える
5
ロギングに関する akka のドキュメントには、次のように構成にハンドラーを登録できると書かれています。
akka {
# Event handlers to register at boot time (Logging$DefaultLogger logs to STDOUT)
event-handlers = ["akka.event.Logging$DefaultLogger"]
# Options: ERROR, WARNING, INFO, DEBUG
loglevel = "DEBUG"
}
SLF4J ハンドラもあります
akka.event.slf4j.Slf4jEventHandler
これを使用すると、logback などの SLF4J 準拠のライブラリを追加して、ログを好きな場所に書き込むことができます。
編集:
logback を使用してファイルにログを記録するには、logback を依存関係として追加する必要があります。構成に Slf4jEventHandler を追加します。
akka {
# Event handlers to register at boot time (Logging$DefaultLogger logs to STDOUT)
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
# Options: ERROR, WARNING, INFO, DEBUG
loglevel = "DEBUG"
}
そして、次のようなものをロックするログバック構成をプロジェクトに追加します(ログバックドキュメントから取得):
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>testFile.log</file>
<append>true</append>
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>
akka の非同期ログのため、ログ パターンで %thread 変数を使用することはできません。代わりにsourceThread
、MDC の変数を使用してください。このページの下部でそれについて読むことができます: http://doc.akka.io/docs/akka/2.0/scala/logging.html
コードで slf4j や logback を明示的に使用する必要はありません。通常の akka ロギングを使用するだけで、ハンドラーが他のすべてを処理します。
于 2012-05-08T08:06:10.493 に答える