Jettyでロギング

ロギングしましょう。

・Request Log
Jetty/Howto/Configure Request Logs - Eclipsepedia
これに書いてある通りです。
デフォルトでは、OFFなので、start.iniの

etc/jetty-requestlog.xml

コメントアウトを外します。これで標準的なRequestのログが、logsに出力されます。

・Server Log
Tomcatだと、accessLogは、server.xml。STDOUTとSTDERRは、conf/logging.propertiesのcatalina.outだったと(たぶん)
Jettyでもcatalina.outと同じレベルのログが欲しければ、普通にリダイレクトすればいいと思います。

java -jar start.jar > console.log 2>&1

Tomcatの場合は、起動のbatやshで、logging.propertiesの設定からロギングしてますね。
ローテーションするのであれば、logrotateとかrotatelogsを使うんでしょうか。

実際のアプリケーションのロギングですが、
etcのファイル見ていると、jetty-logging.xmlなるファイルがある。ググる
Jetty/Feature/Jetty Logging - Eclipsepedia
うん。これで出ることは出ますね。
Log4Jでロギングすると、yyyy_mm_dd.stderrout.logに出力されます。
まぁ、これでもローテーションもしてくれるし、足りるっちゃー足りるんですが、
どうやら時代は、slf4j + logbackらしいので、
Log4Jではなく、logbackでロギングします。

まず、ライブラリ
logback-classic-1.0.1.jar
logback-core-1.0.1.jar
・slf4j-api-1.6.4.jar
以下を、クラスパスが通っているディレクトリに置く。
スタンダードなのは、jetty.home/libか、WEB-INF/libでしょうか。
jetty.home/libにloggingってディレクトリ作って、start.iniのOPTIONSに設定するのもオシャレですね。
これで普通にロギング出来ます。

val logger = LoggerFactory.getLogger(getClass)
logger.info("info")
logger.debug("debug")
logger.error("error")

ただ、このまま使うと、常にloggerを生成しなきゃいけないので、どうにかしたいなと。
ラッパー書いてる人がいました。
GitHub - w11k/slf4s: Simple Scala facade for SLF4J

こんな例Loggingtools in Scala | The point is missed

こんな例http://jectbd.com/?p=1545
もあったけど、トータルでslf4sがよい気がしました。Apache License2.0です。
あと、logback.xmlは、resourcesに置きます。
内容は、こちら参考にさせて頂きました。http://webtide.intalio.com/2011/08/sifting-logs-in-jetty-with-logback/

scalaにはthrows無いですが、当然、呼び出し元でcatch出来るので、
それなりにスッキリとロギング出来そうです。
また、scalaは、全て非チェック例外だそうです。