3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

groovy.sql.Sqlのログ制御

Last updated at Posted at 2017-12-14

これはG* Advent Calendarの15日目の記事で、Groovyの小ネタです。

あと、Advent Calendar初参加記事です :innocent:


便利なgroovy.sql.Sqlクラス

Groovyには超絶便利なgroovy.sql.Sqlクラスがあるおかげで、DBを簡単にプログラムで扱うことができます。

でもこのクラスは

groovy.sql.Sqlクラスは、Groovyプログラムのログ出力にSlf4j+Log4j2を使っていたとしても、Log4j2とは別でログを出力してきます。

このため、例えばPKの一意制約エラーを利用した重複排除のコードを書いた場合、Sqlクラス内ではWARNINGとしてエラーメッセージを出力するようになっているため、Lo4j2でエラーレベルをERRORにしていても、発生の都度エラーメッセージがコンソールに出力されてしまいます。

想定の処理なのにエラーのようなメッセージがユーザに見えるのはよろしくないので、これは表示しないようにしたいですね。

解決策

Sql#newInstanceを実行してインスタンスを作る前に、以下の処理を入れることでログレベルを最高値に変更することができ、WARNINGを抑制することができます。

Sql.LOG.level = Level.SEVERE

たったこれだけで私が2年位悩んだ問題が解決しました :rolling_eyes:

じゃあ重大な障害が発生した場合は?

ログレベルをSEVEREにしているので、もちろん重大な障害が発生した場合はメッセージがコンソールに出力されてしまいます。

でも大丈夫です。
重大な障害なんて発生するわけ無いですよね :innocent:

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?