まずはドキュメントを読む。
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
その他 参考リンク