今回は簡単なログの書き込みを自作しながら、ログについて学びます。
コマンドの自作と同様、Goという言語でログの書き込みを自作することにします。
最新版の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.
といった値が記録されています。