まずはドキュメントを読む。
http://logback.qos.ch/manual/layouts_ja.html
ログに出したい要素を考える。
日時は必須。ミリ秒単位までだす。
年月日の区切りはISOをに合わせて - にする。
ファイル名と行番号。
多少性能落ちるけど、やはり便利。
printStackTraceの形式に合わせるなら、クラス名.メソッド名(ファイル名:行番号) 。
Eclipseとかならこれでジャンプできる。
クラス名。
loggerでクラスを指定すれば、負荷が低い。
呼び出し元クラスで出そうとすると、少し負荷がかかる。
メソッド名も少し負荷がかかる。
スレッド名。
マルチスレッド環境ならスレッドが識別できる情報は必須。
ロギングレベル。
必須。見るべき場所をしぼりたい。
レベル毎に出力先ファイルを分割するという手もあるけど、時系列が追いづらい。
メッセージ。当然いる。
grepしやすいように、改行は基本含めない。
MDC(診断コンテキスト)
サーバログであれば、クライアントの情報を付与するとよい。
IPアドレスやユーザ識別情報など。
Filterで付与するのがよい。
http://logback.qos.ch/manual/mdc_ja.html
こみこみで書くと下記のような感じか。
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{0}.%method\(%file:%line\) %mdc %message%n
出力対象について
基本、jdbc.sqltiming は DEBUG で出力するのがよさそう。
jdbc.resultsettable DEBUG も開発中は有効。
https://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/ArchitectureInDetail/Logging.html
その他 参考リンク
tomokazu-kozuma.com
amg-solution.jp
blog.tagbangers.co.jp