Goでlogrusを用いたファイルへのログ出力

2021/02/13に公開

Goでlogrusを用いたファイルへのログ出力の方法です。

ライブラリはlogrusを使いました。
https://github.com/sirupsen/logrus

公式サイトにほぼ準拠
https://pkg.go.dev/github.com/sirupsen/logrus#example-package-Basic

package services

import (
	"os"

	"github.com/sirupsen/logrus"
)

//LoggerService ログサービス
type LoggerService struct {
}

func (loggerService LoggerService) WriteApiLog(text string) error {
	//ロガーの生成
	var logger = logrus.New()
	//ファイル取得
	//ファイルは無ければ生成(os.O_CREATE)、書き込み(os.O_WRONLY)、追記モード(os.O_APPEND)、権限は0666
	file, err := os.OpenFile("log/api.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err == nil {
		logger.Out = file
	} else {
		return err
	}

	//ログをファイルへ出力
	logger.WithFields(logrus.Fields{
		"msg": text,
	}).Info("ログの取得")
	//以下がファイルに出力される。
	//time="2021-02-13T11:56:48Z" level=info msg="ログの取得" fields.msg=test
	return err
}

Discussion