LoginSignup
0
0

ロガー

Last updated at Posted at 2021-04-05

Log(ログ)

ログとは、プログラム動作中にファイルに柿田さる動作記録のことであり、プログラムの動作状況や障害原因を把握するための情報源です。
ログの出力には何らかのライブラリを利用することが一般的です。

Javaで利用される代表的なログ出力ライブラリ

名称             説明              
Log4J        古くから利用され実績が多いライブラリ
java.util.logging Java 1.4から標準APIとして利用可能なクラス群
commons-logging ログ出力実装を切り替えらる代表的なライブラリ
SLF4J ログ出力実装を切り替えられるライブラリ。Log4Jの後継的存在

それぞくのライブラリによって細かな利用方法や設定は異なりますが、いずれも次のような基本機能を備えています。

  • メソッドを呼び出せば、文字列をログファイルなどに出力することができます。
  • ログ出力時に重要度(ログレベル)を指定できる。

ログレベル

重要度の数や名前はライブラリによって異なりますが、通常は5~8段階程度です。

以下はjava.util.logging.Loggerで定義されているログレベルです。

Loggerメソッド 対応する要求レベル 出力される名称
-- Level.ALL --
Logger.finest() Level.FINEST 最も詳細
Logger.finer() Level.FINER 詳細
Logger.fine() Level.FINE 普通
Logger.config() Level.CONFIG 構成
Logger.info() Level.INFO 情報
Logger.warning() Level.WARNING 警告
Logger.severe() Level.SEVERE 重大
package com.test.logging;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

class log {

    static Logger logger = Logger.getLogger(log.class.getName());

    public static void main(String[] args) {
        try {
            String filePath = "ログ用ファイルのパス";

            // ファイル出力 false : 上書き , true : 追記
            FileHandler fileHandler = new FileHandler(filePath, false);
            fileHandler.setFormatter(new SimpleFormatter());
            logger.addHandler(fileHandler);
            // ファイルに出力する際のログレベルを設定, FINEレベル以上のログが出力される
            logger.setLevel(Level.FINE);

            // コンソール上でログの内容を確認するためにConsoleHandlerを設定
            ConsoleHandler consoleHandler = new ConsoleHandler();
            // 標準出力の要求レベルを設定, CONFIGレベル以上のログが出力される
            consoleHandler.setLevel(Level.CONFIG);
            logger.addHandler(consoleHandler);
            // 親ロガー設定(false : 親ロガーへ送信しない , true : 親ロガーへ送信)
            logger.setUseParentHandlers(false);

            logger.finest("FNST");
            logger.finer("FNR");
            logger.fine("FN");
            logger.config("CFG");
            logger.info("INF");
            logger.warning("WNG");
            logger.severe("SVR");

            throw new IOException();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            logger.log(Level.FINER, "エラー発生", e);
            System.out.println("エラー");

        }
    }

}

実行結果

標準出力
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
構成: CFG
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
情報: INF
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
警告: WNG
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
重大: SVR
エラー
ファイル出力
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
普通: FN
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
構成: CFG
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
情報: INF
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
警告: WNG
4月 04, 2021 12:49:50 午前 com.test.logging.Log main
重大: SVR

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