ログを自作しながら学ぶ

今回は簡単なログの書き込みを自作しながら、ログについて学びます。


コマンドの自作と同様、Goという言語でログの書き込みを自作することにします。

The Go Programming Language


最新版のGoをインストールするに最新版のGoのインストール方法が記載されていますので、内容を参考にして、Goとgoimportsを使用できる状態にします。




ログの書き込みは下記のようにします。

ログの書き込み:/var/log/mylogger/app.log

myloggerディレクトリは今回の自作のログの書き込み用のディレクトリになります。


最初にmyloggerディレクトリを作成しておきます。

$ sudo mkdir /var/log/mylogger
$ sudo chown root:adm /var/log/mylogger
$ sudo chmod g+ws,o+rx /var/log/mylogger

myloggerディレクトリを作成したら、ディレクトリの権限を所有者をrootにして、グループを、admにします。


myloggerディレクトリにグループには書き込み権限(w)とSGIDあり(s)を付与します。

一般ユーザにも読み込み(r)と書き込み(w)の権限を付与します。




/home/pi/log.goを作成して、

package main

import (
	"log"
	"os"
	"path/filepath"
)

func main() {
	// 自作のロガー
	dirPath := "/var/log/mylogger"
	fileName := "app.log"
	fullPath := filepath.Join(dirPath, fileName)

	// ログファイルを開く
	file, err := os.OpenFile(fullPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		log.Fatalf("Failed to create log file.: %v", err)
	}
	defer file.Close()

	log.SetOutput(file)
	// 下記のコードでログ出力時に日付と時刻がセットになった文字列が付与されます。
	log.SetFlags(log.LstdFlags)

	// 書き込み
	log.Println("Hello, my-logger test.")
}

のコードを保存します。


下記のコマンドでコードを実行してみます。

$ go run /home/pi/log.go

コマンド実行後に

$ less /var/log/mylogger/app.log

を実行してみますと、

YYYY/MM/DD HH:MM:SS Hello, my-logger test.

といった値が記録されています。

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。