オックスフォード辞典の文字通りの意味からすると、「log」という単語は「特定の期間中の出来事、特に船や飛行機での旅の公式記録」と定義することができます。 プログラミングの分野でも、プログラマーはこの言葉を使い、プログラムが正しく動作するために重要なイベントやアクティビティを記録しています。 ログを作成する活動はロギングと呼ばれ、そのようなタスクを行うツールはロガーと呼ばれます。
ログはログファイルと呼ばれるファイルに記録されます。 コンピュータプログラマー用語では、ログファイルは
イベント、プロセス、メッセージ、およびさまざまな通信ソフトウェアアプリケーションとオペレーティングシステム間の通信のレジストリを保持するファイルとして記述することができる。 ログファイルは、実行可能なソフトウェア、オペレーティング システム、プログラムに存在し、すべてのメッセージとプロセスの詳細が記録されます。
– Technopedia
ログファイルは、デバッグ、評価、監視などの特定のケースで重要なイベントを記録するために、私たちプログラマにとって重要なものです。 この記事では、Golang を使用してサーバー側で実装する簡単な logger パッケージを作成する方法を共有したいと思います。
Golang における logger パッケージ
コードは “logger” というパッケージ節の宣言から始まり、必須のパッケージをインポートしています。 “fmt”, “log”, “os” と “path/filepath” です。 ここでは、2種類のloggerを使用します。 Common LogとError Logです。 前者は、ログイン、ログアウト、取得データ、ポストデータなどの一般的なイベントを記録するために使用されます。 一方、後者はエラーイベントに特化したログを取るために使用されます。 このロガーの中核は、ログ・オブジェクトに基づいて構築されています。 したがって、2 つの変数 “CommonLog” と “ErrorLog” を作成し(最初の文字は、変数がエクスポートされることを示すために大文字であることに注意してください)、logger 構造体へのポインタを指定します。 まず、ファイルパスを宣言します。 ファイルパス・パッケージの Abs コマンドを使用して、ログファイルの場所を指定します(この場合、ログファイルの絶対位置を使用します)。
init 関数の内部では、ログ ファイルがプログラムによって開かれるときに実行されるコマンドを設定することで続けます (この設定は openLogfile 変数内で参照されます)。 ファイルパス(ファイル名に加えて「filePath」変数を使用)、フラグ、fileModeを指定し、「os」パッケージの「OpenFile」コマンドでこれを行う。 ここでは、ログファイルの名前をlog.logとしています(拡張子がlogであることに注意してください)。 特に注意したいのは、関数内で使用するflagsとfileModeです。 この場合、フラグとは、オープンされたファイルに対して何をすべきかをプログラムに指示する指標と言えます。 この目的のために、”os” パッケージの定義済み定数を使用します:
- os.0_RDWR = ファイルを読み書き可能に開く
- os.0_CREATE = 存在しない場合は新しいファイルを作成
- os.0_APPEND = 書き込み時にデータを追加する
一方、fileMode “0666” は、ファイルを変更するデフォルトのファイル権限を設定するコードです (ユーザー権限についての詳細はこちらをご覧ください)。
さらに、CommonLog および ErrorLog 変数に新しいログが入るように書き換えています。 log” パッケージの “New” コマンドで、1) ログファイルのチャンネル、2) 接頭辞、必要な 3) フラグを指定してこれを行います。 これは、ログを識別するためのものです。 ログの種類を定義するために、カスタム文字列を使用することができます(例:”CommonLogger” または “ErrorLogger” )
コードへのロガーの注入
最後に、プログラムで起こっている重要なイベントを記録するためにロガーに注入することができます。 これは、「fmt」パッケージで使用したものと同様に、「Prinln」コマンドを使用して行うことができます。
ここでログ ファイルでは、ロガーの結果は次のようなフォームになります。 うまくいけば、あなたの仲間のプログラマーに役立つことができます。