[Javaのログ] P1: ソフトウェア開発におけるログの重要性

ブログ桐フインから発表された論文, 著者の同意を得ました.

こんにちはみんな. これらの日、忙しいあまりにも, 新しい永遠に座って書き込みを参加. 今日、私はソフトウェア開発における伐採の問題に関連した経験を共有します.

ログとは何ですか?

ログに来る、それはあなたの多くは、これが仕事である知っている必要がありますプロセスを追跡の 1 コード/機能/アプリケーション, またはエラーが発生した記録 (もしそこに)
公共のすべてのユーザーの詳細情報をログに記録するようなシステム管理者のデータベースなどのすべての主要なシステムクエリを実行 上のものですセッション何時ん. Microsoftがあります, ウェブブラウザ, アドビ,...記録および表示窓にログ機能が含まれていますレポートを送信ソフトウェア開発者のためのエラーが発生したとき.

Kaº¿tquả£NHhìnháºレポートウィンドウを送信します

行うにログイン?

そうするために、終了を追跡し? もちろん、サービス提供 トレーシング すでに.
あなたがエラーを記録した場合、 ときプログラムエラー あなたはどのようなエラーが見ることができます, 任意のコード内と簡単に見つけること 計画を取り扱い. 本番環境でのプログラムの失敗の多くの場合その 再現することができませんでし 再び, 必要性が原因を見つけるためにログに記録するときです.
あなたが録音した場合 ユーザがログインします 適用します, あなたはユーザーが行います知っているだろう アクセス アプリケーションと マニピュレーション 何, そこから荒らしの例加害者を見つけるために.
ログインしている場合 複雑なコード, ザ・ バックグラウンド・プロセス, あなたが知っているだろう 状態 どのようにプロセスを実行しています, 知っています tốc độ xử lý của các nghiệp vụ phức tạp, có cơ sở để tìm ra các đoạn code gây cao tải cho hệ thống.
Và rất nhiều lợi ích khác 🙂

ログの特定の方法があります。?

  • Print ra màn hình
  • Ghi ra file lưu trên ổ cứng
  • Kết nối ftp đến server khác để lưu file và truyền file sang server lưu log, hoặc gửi qua service, email đến nhà phát triển.
  • Insert log vào 1 bảng trong cơ sở dữ liệu

何でログイン?

  • Dùng lệnh print ra màn hình
  • Dùng thư viện log4j, slf4j trong java
  • Hibernateのような実行SQLまたはORMによってデータベースにログインINSERT,...
  • 独自のログモジュールをビルドします

何かのログ?

ではありません 得点以上 また、良好な, レコードがあまりにも行います 冗長ログ 制御およびトレースログが難しいです, ストレージコスト ホストへ, または必要なログを洗い流します
NORことができます あまりにも少ない得点 につながりました ロギングなしません 処理します
十分なログレコード 次のように我々は位置の数を提供します:

  • ブロックで キャッチ例外, 見つけるためにログインする必要があります 位置不良 問題が発生するアプリケーションで.
  • インクルード 機能の使用, できます 高負荷の原因となります システム, ログ記録のために必要な重要な機能 定期的なモニタリング, システムがまだ安定して稼働していることを確認してください.
  • とともに バックグラウンド・プロセス, 毎回ログインする最低限の必要性 起動と終了 一緒に合計で 処理時間 プロセスが敷設されたりしませスケジュールで実行されている知っています, 処理速度速くなったり遅く. 大長時間実行中のプロセスには多くの工程を有するとするたびにログインする必要があります 開始または完了 1 手順 プロセスを監視するステップで処理され, ステップのエラーまたはロールバック. 必要であれば、それは、現在のサーバの状態などの情報を記録することができます RAM, CPU, ディスクIO,... 高いシステム負荷の基本リスク評価へ, 多くの進歩のプロセスを制限し、同時に実行する計画を予定し.
  • 複雑なビジネスでは、多くの処理工程はまた、ログインする必要があります 徐々に 同様のプロセス. またはコード 潜在的なリスク 例えば、あまりにも重要ではない関数は、最適なプランを見つけるために、まだ一時的で処理されます, または時間折り目が監視ロジック異常をログに記録するか、瞬時に処理していないリリース.
  • ときログイン 他のシステムとの通信. そこ 2 それを通信する方法は、他のシステムのためのAPI /公共サービスであります に接続します, またはフラグメントは、他のシステムのAPI /サービスに言及します, または他の接続には、コードを書くことで展開します. すべてが半分をログに記録する必要があります 基本的な情報 として: リンク火災, パス/処理方法, ニュースレター要求, ニュースレター応答, 処理時間. そして、にログインすることをお勧めします £データベース ログを追跡するために最も必要なときに便利. そのためのシステム間の統合、多くの場合、多くの問題を発生しました, 具体的なログが存在しない場合で、エラーを特定することは難しいだろう, 状況につながります 責め お互いのために、問題を解決しません.
  • また、いくつかのシステムか 重要な機能, 特定のログを必要とします インパクトの変更データデータベース. いずれかを記録するために選択/削除/更新/挿入, 変更前と変更後のデータ. データへの影響を制御し、必要なときにデータをロールバックします.
  • またはサーバー上の問題が発生した場合, 再表示されません ローカルに, 障害を見つけることが疑われる場所に、サーバー上でのみ追加のログをデバッグ

どのようにログイン?

一部を確保する必要性をロギングする場合 原則 次のように:
- エラーログ場合、アプリケーションは正常に実行する必要があります. 彼の部分に多くの問題に言及しているが、ロギングの重要性を表明, しかし、主な目標はまだ唯一のシステムの動作に利益をもたらしています, また、用 エンドユーザー その後 どのような意味無し. だから、両方の主要なサービスを行うエラーログエラーがないログへの最高の必要がある場合.
- プロの処理時間に影響を与えない処理時間をログに記録. ログアウトするか、データベースにファイルを挿入したり、任意の場所に保存されたかどうか、それがかかります 1 処理するための時間, ほんの数分または数ミリ秒かかるにもかかわらず、しかし、それはまた、ビジネスの全体の処理時間に影響を与えせてはなりません. 大規模な取引ビジネスの継続性に遭遇したときの時間のロギングのために支払うべき代償は小さくない乗算されているので
数に彼の原理から アドバイス それぞれのログイン時:
- 必ず、すべての例外をキャッチ コードは、ソフトウェア機能の業務に埋め込まれたログの, プライマリサービスをログアウト取り扱いから投げるかもしれないエラーがないことを確認.
- 非同期のロギング 等しい 1 他のプロセス, 最も簡単なのは、それを実行することです 1 自身のスレッド.
+ コマンドを使用しないでください System.out.print (または類似) スクリーン印刷用のログアウト画面を印刷することは非常にゆっくりと行って一連の動作であります
+ 避けます e.printStackTrace() ログアウト画面を印刷します, また、原因に
+ すべきです 非同期ログライブラリを使用 として Log4jのジャワ. それでもただのlog4jてみます 1 コマンド logger.infor("Nội dung")しかし、実際にはその内の両方であります 1 処理システム. コンテンツはSになりますログインする必要がありますubmit上 1 キュー, また、あるでしょう 1 バックグラウンド・プロセス ログの内容を取得するためにスキャンキュー, このような性を保証ロギングは専門の処理時間に影響を与えません。.

ログの監視?

今のソフトウェアは、次のログがその監視システムのタスクデータを記録するために使用されていること. ログ監視システムなどを通じて、さまざまな方法があります。
- 手作業でログファイルを開きます。, 手動で入力して、ログテーブルを選択, と 目で読み取られた情報をログに記録 これは、スーパーバイザがログ情報を表示するためのソフトウェアやデータベースの知識だけでなく、上記のリソースの大半にアクセスする必要がありますが必要です. これは、インスタント可読性ログの開発環境では非常に一般的です, 速いコンパクト.
- また、環境に 製造, スーパーバイザーはソフトウェアの知識を持っていない可能性があります, 彼らはただシステムに座って、何かがうまくいかないときに技術チームに通知します. だから今、ソフトウェアはもっと必要です モニタリング機能 システムは視覚的に同等です 絵, 色, 有益なデータは、行と列を含む明示的なテーブルとして表示する必要があります. これを行うには多くの方法があります
+ 統合 システム モニタリング ログは次のように利用できます JMXリモート, Javaプロファイラー, Nagios, スプリングブートアクチュエータ またはのような完全なセット Logstash (リアルタイムのログデータ収集) + ElasticSearch / Solr (ログデータ分析, 最適化への迅速な全文検索) + Kibana (インターフェイスはログデータ情報を表示します 1 ElasticSearchからの視覚的な方法)

キバナエラスティックサーチログスタッシュの補完構造

自作道具 (ニーズに応じて、単純または複雑) ログファイルデータを読み取る, インターフェイスで警告を分析して表示する上記で利用可能なシステムの多くは非常にうまく機能しているため、これはお勧めしません。, 無料

この記事を通してあなたは基本を学びました重要性 ソフトウェア開発へのログイン, いくつかの原則ロギングするときに知る必要があります. 次の投稿では、統合の具体例を紹介しますモジュール ロギング基本基準 ほとんどのソフトウェア.