0
0

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 3 years have passed since last update.

UtilLoggingJdbcLoggerのログ出力設定を変更したい

Last updated at Posted at 2020-11-07

1. java.util.logging.config.fileを利用する

Doma2ではログ出力にJDBCLoggerインターフェースを利用し、その実装の一例としてUtilLoggingJdbcLoggerが提供されています。このUtilLoggingJdbcLoggerはログ出力にJUL(java.util.logging)を採用しているため、ログ出力に関する設定はシステムプロパティjava.util.logging.config.fileが利用できます。

logging.properties
handlers= java.util.logging.ConsoleHandler, java.util.logging.FileHandler

java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.pattern = logging_by_propertiesfile.log
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

たとえば上記のようなlogging.propertiesがあって、これをUtilLoggingJdbcLoggerの設定としたい場合、-Djava.util.logging.config.file=\path\to\logging.propertiesとすればよいです。

2. java.util.logging.config.fileを利用する

システムプロパティファイルを使わず、自分でUtilLoggingJdbcLoggerを拡張することもできます。

まずUtilLoggingJdbcLoggerを継承したクラスを作成します。このときログ出力の設定はsuper.logger (JULのインスタンス) に対して実施します。

MyUtilLoggingJdbcLogger.java
public class MyUtilLoggingJdbcLogger extends UtilLoggingJdbcLogger {
    public MyUtilLoggingJdbcLogger() {
        try {
            Formatter formatter = new SimpleFormatter();

            Handler consoleHandler = new ConsoleHandler();
            consoleHandler.setFormatter(formatter);
            consoleHandler.setLevel(Level.INFO);

            Handler fileHandler = new FileHandler("logging_by_class.log");
            fileHandler.setFormatter(formatter);
            fileHandler.setLevel(Level.INFO);

            super.logger.addHandler(consoleHandler);
            super.logger.addHandler(fileHandler);
        } catch (SecurityException | IOException e) {
            e.printStackTrace();
        }
    }
}

あとはDoma2のConfigクラスに作成したMyUtilLoggingJdbcLoggerを使うよう設定します。具体的にはgetJdbcLoggerメソッドをオーバライドして、MyUtilLoggingJdbcLoggerインスタンスを戻り値とするだけです。

AppConfig.java
@SingletonConfig
public class AppConfig implements Config {
    private final JdbcLogger logger;

    private AppConfig() {
        logger = new MyUtilLoggingJdbcLogger();
    }

    @Override
    public JdbcLogger getJdbcLogger() {
        return logger;
    }
}

環境情報

  • java: openjdk version "11.0.3" 2019-04-16
  • doma: 2.42.0
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?