SpringBootでのログ出力の基本的なところをやります。
あれこれ、カスタマイズするのではなく、とりあえずログをファイルに書き出せるようにするところまでを範囲にします。
なお、STS3(3.9.6)+SpringBoot2.0+tymeleaf3.0迄動作確認しています。
ログ出力を有効にする
spring-boot-starter-webを有効にすると、自動的にログも有効になろます。
spring-boot-starter-loggingが推移的依存で追加されているので、特に組み込みをしなくても良いので助かります。
ログをだすだけなら、ログ出力をしたいクラスでLogオブジェクトを生成して利用するだけでOKです。
例としては「Hello3Controller」クラスに設定することを想定します。
Log log = LogFactory.getLog(Hello3Controller.class);
または
static Log log = LogFactory.getLog(Hello3Controller.class);
でオブジェクトを取得します。
ログの出力は、適切なログレベルのメソッドを選択して行います。
例えば、INFOレベルなら、log.info("ログ出力");のようにします。
利用可能なメソッドを書いておきます。
左側がメッセージのみ、右側がキャッチした例外をログ出力に含めたいときです。
log.fatal(message);/log.fatal(message, Throwable t);
log.error(message);/log.error(message, Throwable t);
log.warn(message);/log.warn(message, Throwable t);
log.info(message);/log.info(message, Throwable t);
log.debug(message);/log.debug(message, Throwable t);
log.trace( message);/log.trace(message, Throwable t);
デフォルトだと、以下の出力項目が出力されます。
- 日時:ミリ秒の精度で出力されます。
- ログレベル:ERROR、WARN、INFO、DEBUG、TRACEです。(log.fatalとlog.errorは両方共ERRORにマッピングされます)
- プロセスID:プロセスに自動的に付与されたIDです。
- ---:セパレータです。
- スレッド名:動作しているスレッドです。
- ロガー名:クラス名です。
- ログメッセージ:メッセージ本体です。
SpringBootのログ
commons.loggingを使っています。
特定のロギングシステムに依存はしていません。
デフォルトはLogBackになりますが、Log4j、Log4j2、java.util.loggingに変更もできます。(何か特別なことをするのでない限り、あえて、変更する必要はないですけど・・)
ただ、デフォルトではログはコンソールのみしか出力されません。
なので、ファイルに出力できるようにするのと、出力するログレベルの変更などができるように、src/main/resources/application.propertiesに書いておきます。
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
logging.file=
logging.path=C:/sts/logs
上記のように書くと、C:/sts/logsフォルダに、spring.logというファイル名で出力されます。
logging.file=my.log
logging.path=
fileとpathの部分をこのようにすると、プロジェクトのルートフォルダ(pom.xmlとかを置いているフォルダ)に、my.logが出力されます。
ちなみに、logging.fileとlogging.pathの両方に書いて、指定のパスにmy.logを出力させようとしても、意図通りには動きません。
logging.fileの方が勝ちます。つまり、logging.path= と同じ動作になります。
あと、ログに出力するメッセージの量を減らしたい場合は、エラーレベルをあげていけばいいと思います。
特に運用で動かすことを想定するなら、こんな感じの方がよさげです。
logging.level.root=WARN
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=ERROR
いずれにしても、楽ちんではあります。
STS+Spring Boot+thymeleaf 関連記事
入力画面に関連する記事
参照画面・画面遷移に関連する記事
参照画面:テーブルを使い、行毎に色分けした一覧表を表示する。
入力チェックに関連する記事
入力チェック:@Patternと正規表現で独自チェックする。
入力チェック用アノテーション定義を自分で作る。(独自実装版)
データアクセス・その他に関連する記事