プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • システム開発
  • 【システム開発】ログ出力の意義
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【システム開発】ログ出力の意義

05.04

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Webアプリや、スタンドアロンアプリ等、アプリに問わずですが、必ずログは出力させますよね。

そんなログについて情報を整理していきます。

ログ出力の意義

システムは、作って終わりではなくそのご運用、保守をし続ける必要があります。システム障害もつきものです。

その際に、原因究明の足がかりとなるのが「ログ」になります。

ログを出力させるケース

プログラムに例外が発生した場合

データベースに適切なデータがなかった場合

ログをどこに出力させるか?

画面(標準エラー出力)、ファイル等考えられますが、「ログファイル」等の簡単には消えない媒体に保存するのが望ましいです。

ログ出力の内容

情報が少なすぎても、解決することができないですし、多すぎても情報を読み取るのが大変になってしまいます。

また、「開発時に必要なログ」と、「運用時に必要なログ」では、情報が異なるので、その辺も考慮が必要になるでしょう。

ログレベルについて

そこで、重要なのが「ログレベル」を意識して実装することです。適切なログレベルを設定することができれば、「開発者」や「運用者」を意識してログを出力させることができます。

一般的には下記の6種類に分かれるでしょう。

  • Fatal
  • Error
  • Warn
  • Info
  • Debug
  • Trace
優先度は、下記になります。Fatalが一番優先度が高く、Traceが一番低くなります。
Fatal > Error > Warn > Info > Debug > Trace

Fatal

システムの継続が不可能になるレベルのトラブルが起こった場合にこれを出力します。

システム管理者に即メールを飛ばすレベルですが、普通の例外ではまず起こることはないでしょう。

Error

システムのある機能の実行ができない状態になる場合に出力します。

システム運用者が原因究明できるレベルの情報が出力されているのが望ましいです。

Warn

システムのトラブルの中でも、軽微なもので、復帰が可能な場合に出力します。

緊急対応が必要なくても、システム運用者に警告する必要がある情報を出力しておきます。

Info

システム処理が正常に行われているのを確認する場合に、出力します。

ただ、やたらと出力すると、ログを吐きまくって、容量の逼迫や、情報を探すのが困難になりかねないので、必要な情報に絞って出力させます。

基本的に、システム稼動時に、運用者に見せるログとしてはここまでです。

Debug

開発環境や、検証環境でデバッグするために使用します。システム稼動時は、Debugログ以下は、運用字は出力させません。

Trace

メソッドに渡された引数等、アプリの開発時のデバッグ情報として必要な情報は徹底的に盛り込みます。

開発者が必要だと思う限り、自由に出力してもかまいません。

ログレベル設計は非常に大事!

ログレベル設計は、非常に重要です。個々人で、基準を任せるのではなく、最初の設計段階で、どのような基準でログ出力するのかを明確にする必要があります。

なぜなら、運用監視時に、ログ出力されたログレベルに応じて、監視ツールでアラートをあげたりする場合もあるので、その基準が明確でないと適切な運用監視ができなくなってしまうためです。

スポンサーリンク
  • 2018 05.04
  • miyabisan2
  • コメントを書く
  • システム開発
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 12.01

    【システム開発】テストコードを書くことの5つのメリット、デメリット、テスト駆動開発

  2. 2019 12.14

    【VSCode】Railsのデバッグ設定(Mac)

  3. 2019 06.08

    【XML】文書構成

  4. 2018 04.29

    【システム開発】開発モデル、開発手法の種類

  5. 2019 12.14

    【VSCode】Gitとの連携に関する知識

  6. 2019 06.09

    【XML】タグの取り決め(「DTD」や「XML Schma:xsd」)、名前空間について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【SQL】実行計画を調べるEXPLAIN PLANコマ…

【Java】ロギング(ログ出力)ライブラリの比較

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー