【Java】エラー情報を履歴に残す!Loggerの使い方についての解説。
  • facebookページ
  • twitterページ
  • 2019.12.05

    【Java】エラー情報を履歴に残す!Loggerの使い方についての解説。

    ネットでよく耳にする「過去ログ」や「ログを確認する」という言葉はプログラムの世界では非常にメジャーなものです。

    ロギングという言葉で表されますが、これは「起こった出来事についての情報などを一定の形式で時系列に記録・蓄積すること」を指し、このロギングによって記録されたデータのことを「Log(ログ)」と呼びます。

    今回はこのロギングと”Loggerクラス”を使ってログを出力する方法について解説してみたいと思います。

    ロギングとは

    冒頭でも説明していますが、ロギングとは「起こった出来事についての情報などを一定の形式で時系列に記録・蓄積すること」を指します。

    ロギングによって蓄積された記録には次の様な内容が記載されています。

    ロギングによって蓄積される内容
    • 使用している設定値や詳細な情報表示などデバッグ用の表示
    • 正常動作の記録
    • 警告を出しておきたい動作の記録
    • エラーなどの問題の記録
    • 停止してしまうような致命的な記録

    またこれらの内容は致命度によっていくつかに分類されます。

    ログレベルについて

    先ほど解説した「致命度による分類」をログレベルと言い、そのレベルは次のようになっています。

    ログレベル
    • レベル分類 – Levelクラスの定数 – Loggerクラスのメソッド
    • 最も詳細 – FINEST – finest
    • 詳細 – FINER – finer
    • 普通 – FINE – fine
    • 構成 – CONFIG – config
    • 情報 – INFO – info
    • 警告 – WARNING – warning
    • 重大 – SEVERE – severe

    このレベルを基準としてどのレベルからを履歴に残すか選択が出来ます。

    例)Level.INFOとして設定すると、「情報」「警告」「重大」の3種を履歴として保存。

    Loggerでログを出力させる

    ログを出力させるには、いくつかのクラスを組み合わせる必要があります。

    詳しい説明の前にまずはコード全体を見てみましょう。

    実行結果

    では早速、上のコードの説明に入ります。

    まずはじめにLoggerオブジェクトを作成します。

    続いてファイルに出力させる設定に入ります。

    この設定では、Handlerインターフェースの実装クラス”FileHandler”を利用します。

    今回はCドライブ直下に”sample”というフォルダを作成し、そこに”sample.log”というファイルで出力させるため、”FileHandler”の第一引数には「C:\\sample\\sample.log」と記述しています。

    また、”FileHandler”メソッドの第二引数にBoolean型を指定することで、上書きさせるか追記させるかの指定が出来ます。

    尚”true”の場合には上書き型、”false”の場合には追記型となります。

    そして最後に、先ほど作成したHandlerオブジェクトに”setFormatter”メソッドを使って出力時のフォーマットを指定します。

    デフォルトではXMLとなっていますが、今回は読みやすい形式で出力させたいので”SimpleFormatter”を指定しています。

    これでLoggerオブジェクトから”addHandler”メソッドに引数でfHandlerを指定して呼び出せば、エラーログが出力されます。

    例外をスローさせるためのlogメソッドでは、第一引数でログレベル、第二引数でエラー発生時に出力させるメッセージ、第三引数でオブジェクトを指定します。

    こうすることでスタックトレースの内容が表示されるようになるので、どのような例外がいつどこで発生したのか情報を取得できます。

    Loggingを行う上で留意する事

    ここまではLoggingについての解説をしてきましたが、この項目ではLoggingを行う上で留意しておくべき点について少し解説したいと思います。

    単純にLoggingを行ってもその情報が使えなければ何の役にも立ちません。

    また誰もが見れるようなものであるなら、それはセキュリティーホールを自ら公開しているのと同じことになります。

    よってLoggingを行う場合には、以下の点に留意しましょう。

    Loggingを行う際に留意すべき点
    フォーマット
    実行時刻、出力箇所、種類、メッセージは最低限出力表示するさせる
    出力先
    重大なエラーや重要情報等が出力された場合、誰もが見れる場所に置いておくとそれが原因で大変な事態を招くことも。ログファイルは必ず一般公開されていない階層に置くようにする
    ログメッセージ
    わかりやすい内容で簡潔になるよう心掛ける。他の人が見てもすぐわかるようにする。またマルチバイト文字は出来るだけ避ける。

    まとめ

    いかがでしたか?

    今回はLoggerの使い方について解説してみました。

    初心者の方には若干難しく感じたかもしれませんが、Loggingはとても重要なセクターですので、何度も読み返して理解してみましょう。

    またこれ以外にも複雑な構造のプログラムもまだまだたくさんありますので、これを機にロジックをより簡単に読み解く方法についても考えてみましょう。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件